/** * sends an email to the provided email address * * @param string $user_name felhasznalo neve * @param int $user_id user's id * @param string $user_email user's email * @param string $user_activation_hash user's mail verification hash string * @return boolean */ private function _sendVerificationEmail($user_name, $user_id, $user_email, $user_activation_hash) { // Email kezelő osztály behívása include LIBS . '/simple_mail_class.php'; $subject = Config::get('email.verification.subject'); $link = Config::get('email.verification.link'); $html = '<html><body><h3>Kedves ' . $user_name . '!</h3><p>A ' . $user_email . ' e-mail címmel regisztráltál a ---. Regisztrációd megtörtént, de jelenleg passzív.</p><a href="' . BASE_URL . 'regisztracio/' . $user_id . '/' . $user_activation_hash . '">' . $link . '</a><p>Az aktiválást követően a ----- oldalára jutsz, ahol bejelentkezhetsz a felhasználó neveddel és jelszavaddal. Annak érdekében, hogy segíthessünk a számodra leginkább megfelelő munka megtalálásában, töltsd ki a felhasználói profilodat. </p><p>Üdvözlettel:<br>A Multijob Diákszövetkezet csapata</p></body></html>'; $from_email = Config::get('email.from_email'); $from_name = Config::get('email.from_name'); // Létrehozzuk a SimpleMail objektumot $mail = new \System\Libs\SimpleMail(); $mail->setTo($user_email, $user_name)->setSubject($subject)->setFrom($from_email, $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)->setWrap(78); // final sending and check if ($mail->send()) { return true; } else { return false; } }
/** * Hírlevél küldése */ public function send_newsletter() { header('Content-Type: text/event-stream'); // recommended to prevent caching of event data. header('Cache-Control: no-cache'); set_time_limit(0); //ob_implicit_flush(true); // NewsletterStat_model betöltése $this->loadModel('newsletterstat_model'); $newsletter_id = $this->request->get_query('newsletter_id'); //---------------- if (!isset($newsletter_id)) { $this->send_msg('CLOSE', 'Hibas newsletter_id!'); exit; } else { $newsletter_id = (int) $newsletter_id; } // TESZT futtatása (nincs küldés!) if ($this->debug) { $success = 0; $fail = 0; $max = 7; 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:' . $newsletter_id . '| küldés a ' . $number . '@mail.hu címre', $progress); } else { $fail += 1; $this->send_msg($i, 'Sikertelen | id: ' . $newsletter_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; $data['recepients'] = $success + $fail; $data['send_success'] = $success; $data['send_fail'] = $fail; $this->newsletterstat_model->insertStat($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 />'); exit; } else { $error = array(); $success = array(); $data['newsletter_id'] = $newsletter_id; $data['sent_date'] = date('Y-m-d-G:i'); $data['error'] = 1; // új rekord a stat_newsletter táblába (visszatér a last_insert_id-vel) $statid = $this->newsletterstat_model->insertStat($data); // statid lekérdezése //$statid = $this->newsletterstat_model->selectStatId(); // elküldendő hírlevél eleminek lekérdezése $newsletter_temp = $this->newsletter_model->selectNewsletter($newsletter_id); // e-mail címek, és hozzájuk tartozó user nevek (akiknek küldeni kell) $users_data = $this->newsletter_model->userEmails(); foreach ($newsletter_temp as $value) { $subject = $value['newsletter_subject']; $body = $value['newsletter_body']; } foreach ($users_data 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 = false; // küldés simple mail-el if ($simple_mail === true) { // Létrehozzuk a SimpleMail objektumot $mail = new \System\Libs\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('*****@*****.**', 'anonymous')->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, 'Sikertelen küldés a ' . $mail_address . ' címre', $progress); } $mail->reset(); } } else { // küldés PHPMailer-el $mail = new \PHPMailer(); $settings = Config::get('email.server'); if (true) { //SMTP beállítások!! $mail->isSMTP(); // Set mailer to use SMTP //$mail->SMTPDebug = PHPMAILER_DEBUG_MODE; // Enable verbose debug output $mail->SMTPAuth = $settings['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 = $settings['smtp_host']; //$mail->Host = 'localhost'; $mail->Username = $settings['smtp_username']; // SMTP username $mail->Password = $settings['smtp_password']; // SMTP password $mail->Port = $settings['smtp_port']; // TCP port to connect to $mail->SMTPSecure = $settings['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 = $settings['from_email']; //feladó e-mail címe $mail->FromName = $settings['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üzenet küldése $this->send_msg($progress_counter, 'Sikeres küldés a ' . $mail_address . ' címre', $progress); } else { $error[] = $mail_address; //folyamat alatti válaszüzenet küldése $this->send_msg($progress_counter, 'Sikertelen küldés a ' . $mail_address . ' címre', $progress); } $mail->clearAddresses(); $mail->clearAttachments(); } } // ----- email küldés vége ------------- // 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->newsletter_model->updateLastSentDate($newsletter_id, $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; // adatok módosítása a newsletter_stats táblában $this->newsletterstat_model->updateStat($newsletter_id, $data); // utolsó válasz $this->send_msg('CLOSE', '<br />Sikeres küldések száma: ' . $data['send_success'] . '<br />' . 'Sikertelen küldések száma: ' . $data['send_fail'] . '<br />'); } // email küldés vége }