} ################ // zum Testen alle Mails an Klaus #$bastard_subject = $count." - TEST - ".$action." - ".$row['firstname']." ".$row['surname']; #$message = $row['firstname']." ".$row['surname']." - ".$row['email']; #$row['email'] = "*****@*****.**"; ################ // Kontrolle if (!isset($_GET["sendNow"])) { $control_rows .= "<tr><td>" . $count . "</td> <td>" . $row['id'] . "</td> <td><b>" . $row['firstname'] . " " . $row['surname'] . "</b></td> <td>" . $row['email'] . "</td> <td>" . $row['password'] . "</td></tr>"; } if (isset($_GET["sendNow"])) { $mail->setTo($row['email'], '')->setMessage($message); $mail->setSubject($bastard_subject)->setFrom('*****@*****.**', 'cyclos design')->addMailHeader('Reply-To', '*****@*****.**', 'cyclos design')->addGenericHeader('X-Mailer', 'PHP/' . phpversion())->addGenericHeader('Content-Type', 'text/plain; charset="utf-8"')->setWrap(78); $send = $mail->send(); $mail->reset(); /* // Kontrolle - Liste der gesendeten Mails // Bedingung funktioniert nicht !?? if($send) { #echo 'Email was sent successfully!'; $success .= $count."_".$row['firstname']."|"; } else { #echo 'An error occurred. We could not send email'; } */ } $count++;
/** * Hírlevelek elküldése * * $_POST['message_id'] * */ public function send_newsletter() { $debug = false; $x = Session::get('newsletter_id'); $id = isset($x) ? $x : 'rossz'; /* if(isset($_POST['newsletter_id'])){ $id = $_POST['newsletter_id']; } else { $id = 'nincsen!!!'; } */ if ($debug) { $success = 0; $fail = 0; $max = 5; for ($i = 1; $i <= $max; $i++) { $number = rand(1000, 11000); $progress = round($i / $max * 100); //Progress //Hard work!! sleep(1); if ($number > 4000) { $success += 1; $this->send_msg($i, 'Sikeres | id:' . $id . '| küldés a ' . $number . '@mail.hu címre', $progress); } else { $fail += 1; $this->send_msg($i, 'Sikertelen | id: ' . $id . '| küldés a ' . $number . '@mail.hu címre', $progress); } } sleep(1); // adatok beírása a stats_newsletters táblába $data['sent_date'] = date('Y-m-d-G:i'); $data['newsletter_id'] = $newsletter_id = (int) $_POST['newsletter_id']; $data['recepients'] = $success + $fail; $data['send_success'] = $success; $data['send_fail'] = $fail; $this->query->reset(); $this->query->set_table(array('stats_newsletters')); $this->query->insert($data); //utolsó válasz $this->send_msg('CLOSE', '<br />Sikeres küldések száma: ' . $success . '<br />' . 'Sikertelen küldések száma: ' . $fail . '<br />'); } else { $error = array(); $success = array(); // id megadása $x = Session::get('newsletter_id'); $newsletter_id = isset($x) ? $x : null; //$newsletter_id = (int)$_POST['newsletter_id']; $data['newsletter_id'] = $newsletter_id; $data['sent_date'] = date('Y-m-d-G:i'); $data['error'] = 1; $this->query->reset(); $this->query->set_table(array('stats_newsletters')); $result = $this->query->insert($data); $this->query->reset(); $this->query->set_table(array('stats_newsletters')); $this->query->set_columns('statid'); $this->query->set_orderby('statid', 'DESC'); $this->query->set_limit(1); $result = $this->query->select(); $statid = (int) $result[0]['statid']; // elküldendő hírlevél eleminek lekérdezése $newsletter_temp = $this->newsletter_query((int) $newsletter_id); // e-mail címek, és hozzájuk tartozó user nevek (akiknek küldeni kell) $email_temp = $this->user_email_query(); foreach ($newsletter_temp as $value) { $subject = $value['newsletter_subject']; $body = $value['newsletter_body']; } foreach ($email_temp as $value) { $user_emails[] = $value['user_email']; $user_names[] = $value['user_name']; $user_ids[] = $value['user_id']; $user_unsubs[] = $value['user_unsubscribe_code']; } //az összes email_cím száma $all_email_address = count($user_emails); /*----- Email-ek küldése -------*/ // küldés simple mail-el történjen $simple_mail = true; // küldés simple mail-el if ($simple_mail === true) { // Email kezelő osztály behívása include LIBS . '/simple_mail_class.php'; // Létrehozzuk a SimpleMail objektumot $mail = new SimpleMail(); //a ciklusok számát fogja számolni (vagyis hogy éppen mennyi emailt küldött el) $progress_counter = 0; foreach ($user_emails as $key => $mail_address) { //Since the tracking URL is a bit long, I usually put it in a variable of it's own $tracker = URL . 'track_open/' . $user_ids[$key] . '/' . $statid; //Add the tracker to the message. $message = '<img alt="" src="' . $tracker . '" width="1" height="1" border="0" />'; $unsubscribe_url = URL . 'leiratkozas/' . $user_ids[$key] . '/' . $user_unsubs[$key]; $unsubscribe = '<p>Leiratkozáshoz kattintson a következő linkre: <a href="' . $unsubscribe_url . '">Leiratkozás</a></p>'; $progress_counter += 1; //küldés állapota %-ban $progress = round($progress_counter / $all_email_address * 100); $mail->setTo($mail_address, $user_names[$key])->setSubject($subject)->setFrom(EMAIL_VERIFICATION_FROM_EMAIL, EMAIL_VERIFICATION_FROM_NAME)->addMailHeader('Reply-To', '*****@*****.**', 'Mail Bot')->addGenericHeader('MIME-Version', '1.0')->addGenericHeader('Content-Type', 'text/html; charset="utf-8"')->addGenericHeader('X-Mailer', 'PHP/' . phpversion())->setMessage('<html><body>' . $body . '</body></html>')->setWrap(78); // final sending and check if ($mail->send()) { $success[] = $mail_address; //üzenet küldése $this->send_msg($progress_counter, 'Sikeres küldés a ' . $mail_address . ' címre', $progress); } else { $error[] = $mail_address; //üzenet küldése $this->send_msg($progress_counter, 'Sikeres küldés a ' . $mail_address . ' címre', $progress); } $mail->reset(); } } else { // küldés PHPMailer-el include LIBS . '/PHPMailer/PHPMailerAutoload.php'; $mail = new PHPMailer(); if (EMAIL_USE_SMTP) { //SMTP beállítások!! $mail->isSMTP(); // Set mailer to use SMTP //$mail->SMTPDebug = PHPMAILER_DEBUG_MODE; // Enable verbose debug output $mail->SMTPAuth = EMAIL_SMTP_AUTH; // Enable SMTP authentication //$mail->SMTPKeepAlive = true; // SMTP connection will not close after each email sent, reduces SMTP overhead // Specify SMTP host server $mail->Host = EMAIL_SMTP_HOST; //$mail->Host = 'localhost'; $mail->Username = EMAIL_SMTP_USERNAME; // SMTP username $mail->Password = EMAIL_SMTP_PASSWORD; // SMTP password $mail->Port = EMAIL_SMTP_PORT; // TCP port to connect to $mail->SMTPSecure = EMAIL_SMTP_ENCRYPTION; // Enable TLS encryption, `ssl` also accepted } else { $mail->IsMail(); } $mail->CharSet = 'UTF-8'; //karakterkódolás beállítása $mail->WordWrap = 78; //sortörés beállítása (a default 0 - vagyis nincs) $mail->From = EMAIL_FROM_EMAIL; //feladó e-mail címe $mail->FromName = EMAIL_FROM_NAME; //feladó neve $mail->addReplyTo('*****@*****.**', 'Information'); //Set an alternative reply-to address $mail->Subject = $subject; // Tárgy megadása $mail->isHTML(true); // Set email format to HTML $mail->Body = '<html><body>' . $body . '</body></html>'; //a ciklusok számát fogja számolni (vagyis hogy éppen mennyi emailt küldött el) $progress_counter = 0; //email-ek elküldés ciklussal foreach ($user_emails as $key => $mail_address) { $progress_counter += 1; //küldés állapota %-ban $progress = round($progress_counter / $all_email_address * 100); $mail->addAddress($mail_address, $user_names[$key]); // Add a recipient (Name is optional) //$mail->addCC('*****@*****.**'); //$mail->addBCC('*****@*****.**'); //$mail->addStringAttachment('image_eleresi_ut_az_adatbazisban', 'YourPhoto.jpg'); //Assumes the image data is stored in the DB //$mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; // final sending and check if ($mail->send()) { $success[] = $mail_address; //folyamat alatti válasz $response = array("progress" => $progress); echo json_encode($response); } else { $error[] = $mail_address; //folyamat alatti válasz $response = array("progress" => $progress); echo json_encode($response); } $mail->clearAddresses(); $mail->clearAttachments(); } } // ha volt sikeres küldés, adatbázisba írjuk az elküldés dátumát if (count($success) > 0) { // az adatbázisban módosítjuk az utolsó küldés mező tartalmát $lastsent_date = date('Y-m-d-G:i'); $this->query->reset(); $this->query->set_table(array('newsletters')); $this->query->set_where('newsletter_id', '=', $newsletter_id); $this->query->update(array('newsletter_lastsent_date' => $lastsent_date)); } // adatok beírása a stats_newsletters táblába $data['recepients'] = count($success) + count($error); $data['send_success'] = count($success); $data['send_fail'] = count($error); $data['error'] = 0; $this->query->reset(); $this->query->set_table(array('stats_newsletters')); $this->query->set_where('newsletter_id', '=', $newsletter_id); $result = $this->query->update($data); // utolsó válasz $this->send_msg('CLOSE', '<br />Sikeres küldések száma: ' . count($success) . '<br />' . 'Sikertelen küldések száma: ' . count($fail) . '<br />'); } // email küldés vége }