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;
 }