function check_configuration($port, $security) { flush(); try { $mail = Newsletter::initMailer($port, $security); $mail->Timeout = 3; // seconds $mail->SMTPDebug = 2; $mail->clearAddresses(); $mail->addAddress(SENDER_ADDRESS, SENDER_NAME); $mail->addReplyTo(SENDER_ADDRESS, SENDER_NAME); $mail->setFrom(SENDER_ADDRESS, SENDER_NAME); $mail->Subject = "Open-Letters NewsletterSoftware => Test-Email"; $mail->Body = "Dear Newsletter owner,\n\nThis mail was sent to You by file " . __FILE__ . " on Your Webspace. That You can read this mail means the" . " email configuration in Your config/config.inc.php is right.\n\n" . "best regards\nOpen-Letters"; $mail->smtpConnect(); if (!$mail->send()) { throw new Exception("ERROR sending an Email: " . $mail->ErrorInfo, "666"); } else { echo "This configuration DID work: Port=" . $port . " and Security=" . $security . "!!!<br>" . "The inbox of " . SENDER_ADDRESS . " should " . "have a new email right now. If this email was not received, " . "please check Your spam folder and configuration.<br>" . "<span class='success'>Success, test mail was sent!</span><br>"; return true; } } catch (Exception $e) { echo "Your configuration did NOT work: Port=" . $port . " and Security=" . $security . "<br>"; echo $e->getMessage(); echo "<span class='error'>Sorry, this try did not work.</span><br><br>"; return false; } }
/** * Diese Methode bereitet das Objekt der Klasse <i>PhpMailer</i> darauf vor, die * Newsletter zu versenden. Beim ersten Aufruf dieser Methode wird der Mailer * tatsaechlich initiiert, spaeter wird nur auf das im statischen Attribut * abgelegt. * @return PhpMailer ein Objekt der Klasse PhpMailer, dem nur der Inhalt der * E-Mail (HTML und Text) und der Empfaenger fehlt */ protected function send_double_optin_mail($user_input) { $rueckgabe = null; try { ob_start(); require_once ROOT_PATH . "include/newsletter.class.php"; $mail = Newsletter::initMailer(); // Emailadressen und Betreff $mail->addReplyTo(SENDER_ADDRESS, SENDER_NAME); $mail->setFrom(SENDER_ADDRESS, SENDER_NAME); $mail->addAddress($user_input['newsemail'], $user_input['firstname'] . " " . $user_input['name']); $mail->Subject = $this->text->get_text('newsletter_subscription_opt_in_email_subject') . $_SERVER["HTTP_HOST"]; $text = $this->text->get_text('newsletter_subscription_opt_in_email_message'); $text = str_replace("#####host#####", $_SERVER['HTTP_HOST'], $text); $url = rtrim(ROOT_DOMAIN, "/") . "/index.php?doubleoptin=" . $user_input['double_optin_token']; $mail->AltBody = str_replace("#####url#####", $url, $text); $url = "<br><a href='" . $url . "'>" . $url . "</a>"; $text = str_replace("\n", "<br>", $text); $text = str_replace("#####url#####", $url, $text); $mail->msgHTML($text); if ($mail->send()) { $rueckgabe = true; } $error = ob_get_contents(); ob_end_clean(); if (strlen(trim($error)) > 0) { throw new Exception("Fehler beim Versand der Double-OptIn-Mail: " . $error); } } catch (Exception $e) { $this->logmessage($e->getMessage()); $rueckgabe = false; } return $rueckgabe; }
/** * Diese Methode fuehrt den Versand der Newsletter-E-Mails aus. * @param array $receivers die Empfaenger dieses Versandprozesses * @return int die ID des letzten Empfaengers, dem der Newsletter * zugestellt wurde */ protected function execute_sending($receivers) { // Objekt von PhpMailer (einmalig) konfigurieren try { ob_start(); $mail = Newsletter::initMailer(); // Emailadressen und Betreff $mail->addReplyTo(SENDER_ADDRESS, SENDER_NAME); $mail->setFrom(SENDER_ADDRESS, SENDER_NAME); $subject = SUBJECT; if (SUBJECT_DATE) { $subject .= " " . date("d.m.Y", $this->timestamp); } $mail->Subject = $subject; $error = ob_get_contents(); ob_end_clean(); if (strlen(trim($error)) > 0) { throw new Exception($error); } } catch (Exception $e) { $this->logmessage($e->getMessage()); return false; } // Schleife ueber all diese Empfaenger $anzahl = count($receivers); $last_receiver = 0; for ($i = 0; $i < $anzahl; $i++) { try { ob_start(); // E-Mail-Adresse pruefen und (wenn keine E-Mail-Adresse) ueberspringen if (!filter_var($receivers[$i]['email'], FILTER_VALIDATE_EMAIL)) { $last_receiver = $receivers[$i]['email_id']; continue; } // Adresse dieses Empfaengers in den Mailer setzen $mail->clearAddresses(); $mail->addAddress($receivers[$i]['email'], $receivers[$i]['name']); // Adresse dieses Empfaengers in den Mail-Text setzen $html_text = $this->getHtml($receivers[$i]['email']); $plain_text = $this->getTxt($receivers[$i]['email']); // Inhalte setzen $mail->AltBody = $plain_text; $mail->msgHTML($html_text); // Im Debug-Modus simulieren wir das Versenden nur if (DEBUG_MODUS > 0) { $this->logmessage("Der Newsletter vom " . date("d.m.Y") . " wurde an " . $receivers[$i]['name'] . " (" . $receivers[$i]['email'] . ", UserID " . $receivers[$i]['email_id'] . ") simuliert."); } else { // kein Debug-Modus: Versenden versuchen if (!$mail->send()) { $this->logmessage("Der Newsletter vom " . date("d.m.Y") . " konnte nicht an " . $receivers[$i]['name'] . " (" . $receivers[$i]['email'] . ") versendet werden. Fehlermeldung: " . $mail->ErrorInfo); } } $error = ob_get_contents(); ob_end_clean(); if (strlen(trim($error)) > 0) { throw new Exception($error); } } catch (Exception $e) { $this->logmessage("Fehler beim Versand der Newsletter-eMail: " . $e->getMessage()); } $last_receiver = $receivers[$i]['email_id']; } return $last_receiver; }