Ankündigung

Einklappen
Keine Ankündigung bisher.

Viele Fragen rund um das Thema 'Mail'

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Viele Fragen rund um das Thema 'Mail'

    Ich habe mich in der letzten Zeit sehr intensiv mit dem Thema Mailen beschäftigt und da haben sich viele Fragen/Probleme ergeben. Jene, zu denen ich ich bis dato keine Antwort oder keine Lösung gefunden habe, möchte ich hier vorstellen und bedanke mich schon jetzt für jede Antwort und Hilfestellung! Es sind insgesamt 8 Fragen/Fragenkomplexe, weil ich die Sache wirklich verstehen möchte. Ich bitte um Entschuldigung für die Größe und Komplexität!

    1.) Verstehe ich es richtig, dass Mails, die durch ein PHP Skript mittels mail() gesendet werden, vom Webserver direkt versendet werden und nicht vom Mailserver?

    2.) Wenn dem so ist, wieso finde ich dann bei genauerer Untersuchung des Mailheaders bei solchen Eingängen ein by localhost with SMTP? SMTP kann doch nur der Mailserver?! Und was bedeutet hier das localhost? Ist das der Hinweis, dass die Mail vom Webserver und nicht vom Mailserver kommt?

    3.) Nachdem ich überall lese, man soll lieber die PHPMailer Bibliothek statt der mail() Funktion verwenden, um Mails zu versenden, habe ich mir das runtergeladen und zum Testen auf den Server gelegt. Das kürzeste und einfachste Handling, das ich dafür gefunden habe, war folgender Code:

    // Zuerst Einfügen von Exception.php, OAuth.php, PHPMailer.php, POP3.php und SMTP.php
    // Dann das Festlegen von Sendername, Sendermail, Empfängername und Sendermail in entsprechenden Variablen

    PHP-Code:

    $mail 
    = new PHPMailer;
    $mail->CharSet 'UTF-8';
    $mail->setFrom($sender_mail$sender_name);
    $mail->addAddress($S_recipient_mail$S_recipient_name);
    $mail->Subject 'foo';
    $mail->Body 'bar'
    Das funktioniert wunderbar. Sogar Umlaute im Header und im Body der Mail machen durch die Festlegung auf UTF-8 keine Probleme. So weit, so gut. Das läuft jetzt angeblich über den Mailserver. Wenn dem so ist und somit per SMTP gesendet wird, wozu dient dann die weitere Angabe $mail->isSMTP();?

    4.) Auf zB. dieser offiziellen Beipsiel-Seite stehen weitere Aktionen:

    PHP-Code:

    $mail
    ->SMTPDebug SMTP:: DEBUG_SERVER;
    $mail->Host 'mail.example.com';
    $mail->Port 25;
    $mail->SMTPAuth true;
    $mail->Username '[email protected]';
    $mail->Password 'yourpassword'
    Was ist da die richtige Port Angabe für uns bei Domainfactory? Und was genau macht $mail->SMTPDebug?

    5.) Wozu soll hier die Verwendung von Username und Passwort gut sein? Es werden keine Mails abgeholt/gelesen, sondern nur von mir selbst versendet. Wozu muss ich mir selbst dann Username und Passwort dazuschreiben? Was ist da der Sinn dahinter? Und vor allem: Ich habe ja mehrere Mailadressen unter meinedomain.example.org eingerichtet. Jede mit anderem Passwort. Soll man da jetzt das Passwort irgendeiner Mailadresse verwenden? Weil die verwendete Absender Mailadresse muss ja, wie ich gesehen habe, nicht einmal existieren. Solange die dazugehörende Domain stimmt, kommen die Mails an. Also was für ein Passwort und wozu?

    6.) Kommen wir zur Möglichkeit, die Mail sicher zu versenden. Da habe ich mehrfach gelesen, dass SSL hier deprecated sei und man TLS verwenden möge. Als entsprechenden Code dazu habe ich Folgendes gefunden: $mail->SMTPSecure = "tls". Wieso nicht SSL?

    7.) Wenn man im Kundenmenü bei den Mailadressen auf Serveradressen anzeigen klickt, bekommt man ja zum Beispiel sowas zu sehen:

    Benutzername: [email protected]
    Passwort: Wie von Ihnen vergeben
    IMAP-Server: imap.bitfeed.net
    POP3-Server: pop3.bitfeed.net
    SMTP-Server: smtp.meinedomain.example.org
    Servername für SSL-Abruf: sslin.df.eu (Zertifikatsdownload: POP3- und IMAP-Zertifikat)
    Servername für SSL-Abruf: sslmailpool.ispgateway.de (Zertifikatsdownload: POP3- und IMAP-Zertifikat)
    Port für SSL-Abruf bei POP3-Nutzung: 995
    Port für SSL-Abruf bei IMAP-Nutzung: 993
    Servername für SSL-Versand: sslout.df.eu (Zertifikatsdownload: SMTP-Zertifikat)
    smtprelaypool.ispgateway.de (Zertifikatsdownload: SMTP-Zertifikat)
    Port für SSL-Versand: 465
    Mailservername: Mailcluster2-2
    Domainname: meinedomain.example.org
    Welche dieser Angaben sind nun wichtig? Bei Verwendung von $mail->SMTPSecure = "tls" muss ich also jetzt (im Gegensatz zu Frage 4) 465 als Portangabe verwenden? Ganz generell muss ich leider feststellen: Ich habe stundenlang alle möglichen Angaben und Parameter variiert, dazu genommen, oder weggelassen. Leider ist es immer so, egal, wie ich es auch anstelle, dass der Mailversand nicht funktioniert Die Fehlermeldung ist in 95% dieselbe: SMTP Error: Could not connect to SMTP host.

    Meine Frage also: Wenn ich nun alles kombinieren möchte. Also eine sichere Versendung, SMTP und real existierende sowie nichtexistierende Mailadresse als Absender, was muss dann für uns als Domainfactory Kunden im Skript stehen, damit es zu einem fehlerlosen Mailversand kommt? Kann das bitte wer anhand eines Beispielcodes aufzeigen?

    8.) Kommen wir zu meiner derzeit letzten Unklarheit: Beim Testen von selbst versendeten Mails auf Seiten wie zB. mail-tester.com wurde kritisiert, dass SPF und DKIM Einträge fehlen. Ich habe, um ehrlich zu sein, noch nicht wirklich verstanden, wozu diese beiden Angaben gut sind. Zu SPF konnte ich hier bei Domainfactory etwas finden, mit dem SPF-Assistent im Kundenmenü habe ich es auch geschafft, einen entsprechenden Eintrag anzulegen. Würde trotzdem gerne wissen, was das jetzt mehr bringt? Leider habe ich zu DKIM überhaupt nichts gefunden bei Domainfactory. Weder bei den FAQ, noch im Forum. Ich weiß, dass ich das auch im Kundenmenü machen kann und dort statt SPF das txt auswählen muss. Und dass ich dafür einen eigenen und einen Fremdschlüssel brauche oder so ähnlich. Wo ich die herbekomme, wie die aussehen und was das ganze bringt, davon habe ich Null Ahnung. Was genau muss ich da also wo tun jetzt? Ich möchte auch DKIM verwenden, wenn das die Spameinstufung meiner Mails herabsetzt!

    Nochmals Danke im Voraus für jede Hilfe!

    Der Brombeermilchtrinker

    #2
    1) Richtig
    2) Weil auch so über SMTP gesendet wird. Allerdings eben vom Webserver aus der eine schlechtere Reputation hat als der Mailcluster.
    3) Ohne sonstige Angaben versendet PHPMailer weiterhin über sendmail, also den Webserver. Das isSMTP() ist da um eben zu sagen er soll direkt einen SMTP-Server und nicht sendmail nutzen.
    4) Findest du https://www.df.eu/de/support/df-faq/...ail-programme/]hier[/url]. 25 sollte also passen. Das Debugging ist für genauere/mehr Logdaten.
    5) Ganz einfach: Ohne Benutzername/Passwort könnte jeder den Mailserver zum Versand von Spam nutzen. Das schlägt sich dann natürlich auch auf die Repotation nieder. Am besten für den einfachen Versand ein Postfach mit Mindestgröße einrichten.
    6) SSL hat einige bekannte Sicherheitslücken die Angriff vereinfachen können. Deswegen die neue Version TLS.
    7) Korrekt, da nimmst du "sslout.df.eu" und Port 465. Testen kann ich das leider nicht. Habe keine Mailbox mehr hier.
    8) Ein SPF-Eintrag sagt welcher Server Mails für die Domain versenden darf. Wenn der Zielserver das prüft und die Mail wurde von einem anderen Server versendet kann er sie leicht ablehnen.
    Bei DKIM steht ein öffentlicher Schlüssel in den DNS-Einträgen. Der versendende Mailserver siginiert die Mail. Der Zielserver kann damit prüfen ob der Sender richtig ist und ob die Mail auf dem Weg manipuliert wurde.
    DKIM muss allerdings der Mailserver können. Afair ist das bei dF nicht der Fall.

    Ich trinke zwar keine Brombeermilch, aber mit einer Buttermilch proste ich mal rüber.

    Kommentar


      #3
      Zitat von Lukas M. Beitrag anzeigen
      ...
      7) Korrekt, da nimmst du "sslout.df.eu" und Port 465. Testen kann ich das leider nicht. Habe keine Mailbox mehr hier.
      ..
      Mittlerweile passt hier auch sslout.de über Port 465
      (Mit Benutzername & Passwort eines gültigen Postfaches)

      Gruss Rolf
      Zuletzt geändert von wsp; 30.04.2020, 16:33.

      Kommentar


        #4
        Danke für Eure bisherigen Antworten!

        Leider stehe ich genau so da wie vor 10 Stunden. Es funktioniert einfach nicht.
        Ich habe extra eine Mailadresse angelegt und mit den Logindaten dieser Mailadresse arbeite ich nun.
        Leider bin ich wieder genau dort, wo ich schon war:
        Es passiert minutenlang nichts bei Aufruf der Seite ... bis dann irgendwann die Gateway Timeout Fehlermeldung kommt.
        Das hier ist jetzt 1:1 das komplette Skript. Ich habe nur die URLs/Mailadressen anonymisiert.
        Irgendwo hier muss also was falsch sein oder es fehlt etwas:

        PHP-Code:

        <?php

        declare(strict_types 1);
        namespace 
        PHPMailer\PHPMailer;
        header('content-type:text/html; charset=UTF-8');
        error_reporting(E_ALL|E_STRICT);
        mb_internal_encoding('UTF-8');
        date_default_timezone_set('Europe/Vienna');

        // Absender:
        $sender_mail '[email protected]';
        $sender_name 'Max Mustermann';

        //Empfänger:
        $S_recipient_mail '[email protected]';
        $S_recipient_name 'Max Mustermann';

        require 
        'inc/Exception.php';
        require 
        'inc/OAuth.php';
        require 
        'inc/PHPMailer.php';
        require 
        'inc/POP3.php';
        require 
        'inc/SMTP.php';

        $mail = new PHPMailer;
        $mail->isSMTP();
        $mail->SMTPDebug SMTP::DEBUG_SERVER;
        $mail->CharSet 'UTF-8';
        $mail->Host 'sslout.de';
        $mail->Port 465;
        $mail->SMTPAuth TRUE;
        $mail->SMTPSecure "TLS";
        $mail->Username '[email protected]';
        $mail->Password 'mein_passwort';
        $mail->setFrom($sender_mail$sender_name);
        $mail->addAddress($S_recipient_mail$S_recipient_name);
        $mail->Subject 'foo';
        $mail->Body 'bar';

        if(!
        $mail->send())
          {
            echo 
        '<p>Message was not sent.<p>';
            echo 
        '<p>Mailer error: '.$mail->ErrorInfo.'</p>';
          }
        else
          {
            echo 
        '<p>Message has been sent.</p>';
          }

        ?>

        Sieht wer, woran es scheitert?

        Kommentar


          #5
          Hi Lukas!

          Zitat von Lukas M. Beitrag anzeigen
          5) Ganz einfach: Ohne Benutzername/Passwort könnte jeder den Mailserver zum Versand von Spam nutzen. Das schlägt sich dann natürlich auch auf die Repotation nieder. Am besten für den einfachen Versand ein Postfach mit Mindestgröße einrichten.
          Das wäre ja nur dann logisch, wenn es ohne Usernamen und Passwort prinzipiell nicht ginge. Aber genau darum ging es mir ja. SIehe mein erstes Beispiel. Das ist ohne Usernamen und Passwort und die Mail wird versendet! Sogar mit einer nicht real existierenden Mailadresse!
          Also frage ich mich weiterhin, wozu Usernamen und Passwort gut sind, wenn es auch ohne funktioniert und ich das sozusagen nur für mich selbst in den Code einfüge.

          LG

          Der Brombeermilchtrinker

          Zitat von Lukas M. Beitrag anzeigen
          Ich trinke zwar keine Brombeermilch, aber mit einer Buttermilch proste ich mal rüber
          Da versäumst aber was! Weil Buttermilch, Brombeeren und etwas Vanille-Eis 1-2 Minuten gut im Mixer pürieren, dicken Strohhalm rein und Du hast was Göttliches vor Dir!

          Kommentar


            #6
            Zitat von Brombeermilchtrinker Beitrag anzeigen
            Da versäumst aber was! Weil Buttermilch, Brombeeren und etwas Vanille-Eis 1-2 Minuten gut im Mixer pürieren, dicken Strohhalm rein und Du hast was Göttliches vor Dir!
            Werde ich mir merken und mal probieren.

            Zitat von Brombeermilchtrinker Beitrag anzeigen
            Das wäre ja nur dann logisch, wenn es ohne Usernamen und Passwort prinzipiell nicht ginge. Aber genau darum ging es mir ja. SIehe mein erstes Beispiel. Das ist ohne Usernamen und Passwort und die Mail wird versendet! Sogar mit einer nicht real existierenden Mailadresse!
            Also frage ich mich weiterhin, wozu Usernamen und Passwort gut sind, wenn es auch ohne funktioniert und ich das sozusagen nur für mich selbst in den Code einfüge.
            Ja, in deinem Beispiel verschickst du ja über den Webserver. Du hast dich dadurch "angemeldet" dass du ja das Script über FTP hochgeladen hast. Damit bist du als Spam-Verursacher auch klar wenn Spam raus geht.


            Kommentar


              #7
              Ist wirklich niemand hier, der PHPMailer verwendet bzw. Erfahrung damit hat? Der/die müsste dann doch sehen, was bei meinem Code fehlt oder falsch ist!?!

              Kommentar


                #8
                schon mal alternativ mit Port 587 getestet?
                https://wewoco.de

                Kommentar


                  #9
                  Ich erinnere mich noch dunkel, dass PHPMailer mir vor ein paar Jahren auch Sorgen gemacht hat. Ich bin dann auf SwiftMailer umgestiegen, das eine etwas modernere Architektur verfolgt. Wir versenden "sinngemäß" ohne weitere Parameter mit folgendem Code Mails:

                  PHP-Code:
                  require 'inc/swiftmailer/vendor/autoload.php';
                  $transport = (new Swift_SmtpTransport('sslout.de'587))
                  ->
                  setUsername('[email protected]')
                  ->
                  setPassword('xxxxxxxxx');
                  $mailer = new Swift_Mailer($transport);

                  $message = (new Swift_Message($subject))
                  ->
                  setFrom([$user['email'] => 'Name'])
                  ->
                  setTo([$id->client->email])
                  ->
                  setBody($text);
                  $result $mailer->send($message); 

                  Kommentar


                    #10
                    Leider komme ich keinen Schritt voran!

                    Natürlich habe ich auch Port 587 getestet. Ich sitze jetzt seit 3 Tagen täglich 10 Stunden vor dem Laptop und wüsste nicht, was ich jetzt noch nicht getestet habe.

                    Das erste Komische ist ja schon mal der Code, mit dem es noch funktioniert und die Mails ankommen:
                    PHP-Code:

                    $mail 
                    = new PHPMailer;
                    $mail->isSMTP();
                    $mail->CharSet 'UTF-8';
                    $mail->setFrom($sender_mail$sender_name);
                    $mail->addAddress($S_recipient_mail$S_recipient_name);
                    $mail->Subject 'foo';
                    $mail->Body 'bar';
                    $mail->SMTPSecure "TLS"

                    Wieso das funktioniert, ist mir nämlich ein Rätsel. Es wird kein SMTP Server angegeben und kein Port, obwohl dieser ja bei TLS abweicht und angegeben werden müsste. Ich habe keine Ahnung, ob die Mail in dem Fall jetzt vom Webserver oder vom Mailserver kommt. Ich habe auch keine Ahnung, ob das per TLS übermittelt wird oder nicht. Ich weiß nur, die Mail wird versendet und kommt an.

                    OK, und wenn ich jetzt die Angabe eines Ports und eines SMTP Servers dazu gebe, funktioniert es nicht mehr. Ich habe alle möglichen Kombinationen aus den Host-Angaben sslout.eu, sslout.df.eu und sslmailpool.ispgateway.de sowie den Portangaben 20, 465 und 587 durchgetestet. Es kommt, bis auf eine Ausnahme, zum sofortigen Abbruch und der Ausgabe von Mailer error: SMTP connect() failed.

                    Der abweichende Fall ist die Kombination aus $mail->Host = "sslout.df.eu"; und $mail->Port = 465;. Da passiert 3 Minuten nichts und der Cursor zeigt das Warte-Zeichen an, bis dann ein 504 Gateway Timeout Error vom Server kommt.

                    An dieser Situation ändert sich auch nichts, wenn ich den Block mit Username, Passwort und einem $mail->SMTPAuth = TRUE; dazugebe. Was mich, so nebenbei, wieder auf mein Verständnisproblem bringt:

                    Zitat von Lukas M. Beitrag anzeigen

                    Ja, in deinem Beispiel verschickst du ja über den Webserver. Du hast dich dadurch "angemeldet" dass du ja das Script über FTP hochgeladen hast. Damit bist du als Spam-Verursacher auch klar wenn Spam raus geht.
                    Sorry, das ist einfach programmtechnisch völlig unlogisch. Dem Skript ist es egal, auf welchem Weg es zu seinem Platz gekommen ist. (Abgesehen davon, dass Skripte sowohl über ein FTP Programm, als auch über ein FTP Webinterface sowieso immer durch eine Passwortschranke laufen!) Aus der Sicht der Verarbeitung muss es einen Unterschied machen, ob eine Angabe von Username, Passwort und $mail->SMTPAuth = TRUE; gemacht wird oder nicht. Und wenn ich sehe, dass ein Mailversand auch ohne diese Angaben funktioniert, dann bleibt für mich die Frage, wozu die Angabe dann gut sein soll.

                    Jedenfalls ... ich bin jetzt an einem Punkt angekommen, wo ich einfach nicht mehr weiter weiß. Ich war auf so vielen unzähligen Seiten, habe YouTube durchforstet, habe alle Kombinationen durchgetestet - es ändert alles nichts daran, dass der Mailversand nicht funktioniert. Wenn es wirklich so ist, wie es immer heißt, nämlich dass niemand die PHP Funktion mail() verwendet und stattdessen mit PHPMailer arbeitet, dann kann das doch kein so exotisches Problem darstellen??? ​​​​​​​



                    Kommentar


                      #11
                      Zitat von Brombeermilchtrinker Beitrag anzeigen
                      Sorry, das ist einfach programmtechnisch völlig unlogisch. Dem Skript ist es egal, auf welchem Weg es zu seinem Platz gekommen ist. (Abgesehen davon, dass Skripte sowohl über ein FTP Programm, als auch über ein FTP Webinterface sowieso immer durch eine Passwortschranke laufen!)
                      Nein, völlig logisch.
                      FTP ist jetzt nur ein Beispiel. Klar kannst du auch über irgendein Webinterface hochladen oder über SFTP.
                      In allen Fällen gilt aber: Es ist bekannt welchem Kunden das Script gehört. Und damit eben auch wer welche Mail versendet.

                      Wenn du über mail() sendest wird Aus der Sicht der Verarbeitung muss es einen Unterschied machen, ob eine Angabe von Username, Passwort und $mail-&gt;SMTPAuth = TRUE; gemacht wird oder nicht. Und wenn ich sehe, dass ein Mailversand auch ohne diese Angaben funktioniert, dann bleibt für mich die Frage, wozu die Angabe dann gut sein soll.
                      Gibt es ja auch.
                      Wenn du über mail() versendest wird die Mail an sendmail übergeben. Das läuft lokal und lässt dementsprechend nicht zu dass es von extern angesprochen werden kann.
                      Die Authentifizierung Mails zu versenden ist also praktisch ein Useraccount auf dem Server. Existiert der kann man Sendmail via Shell oder eben auch via PHP-Script ansprechen.
                      Beim Mailserver ist das anders. Da ist es natürlich gewollt dass der extern ansprechbar ist. Und damit nicht jeder Hinz und Kunz Spammails verschickt gibt es dort eben Username/Passwort.
                      In beiden Fällen lässt sich so der Verursachen leicht ermitteln.

                      Der Vorteil einen richtigen, "echten" Mailserver zu verwenden ist eben die bessere Reputation (weil z.B. bei Provider xyz auf der Whiteliste, Cluster allgemein bekannt), schnellere Abarbeitung und je nach Mailserver eben z.B. auch Unterstützung von DKIM.

                      Wenn es wirklich so ist, wie es immer heißt, nämlich dass niemand die PHP Funktion mail() verwendet und stattdessen mit PHPMailer arbeitet, dann kann das doch kein so exotisches Problem darstellen???
                      Mal die Daten von hier getestet? https://github.com/redaxo/redaxo/issues/2699

                      Kommentar


                        #12
                        Ich verwende zwar Version 6.1.4, es sollte aber keinen nennenswerten Unterschiede zur aktuellen Version geben.


                        PHP-Code:
                        <?php

                        use PHPMailer\PHPMailer\PHPMailer;
                        use 
                        PHPMailer\PHPMailer\Exception;

                        require 
                        'PHPMailer-master-6.1.4/src/Exception.php';
                        require 
                        'PHPMailer-master-6.1.4/src/PHPMailer.php';
                        require 
                        'PHPMailer-master-6.1.4/src/SMTP.php';

                        $email "<h1>Mailtest</h1><p>Ich bin die UTF-8 HTML Test E-Mail</p>";
                        $absender "[email protected]";
                        $empfanger "[email protected]";
                        $betreff "E-Mails mit phpmailer versenden";

                        $mail = new PHPMailer;
                        $mail->isSMTP(); // Send using SMTP
                        $mail->Host 'sslout.df.eu'// Set the SMTP server to send through
                        $mail->SMTPAuth true// Enable SMTP authentication
                        $mail->Username '[email protected]'// SMTP username
                        $mail->Password 'supergeheimes-passwort'// SMTP password
                        $mail->SMTPSecure PHPMailer::ENCRYPTION_STARTTLS// Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
                        $mail->Port 465// TCP port to connect to


                        // UTF-8 Mail
                        $mail->CharSet "UTF-8";

                        //Set who the message is to be sent from
                        $mail->setFrom($absender);

                        //Set who the message is to be sent to
                        $mail->addAddress($empfanger);

                        //Set the subject line
                        $mail->Subject $betreff;

                        //convert HTML into a basic plain-text alternative body
                        $mail->msgHTML($email);
                        //Replace the plain text body with one created manually
                        $mail->AltBody strip_tags($email);


                        //send the message, check for errors
                        if (!$mail->send()) {
                        echo 
                        "<h1>Mailer Error</h1><h2>" $mail->ErrorInfo."</h2>";
                        }else{
                        echo 
                        "<h1>Alles gut</h1>";
                        }


                        ?>
                        Zuletzt geändert von masterframe; 01.05.2020, 18:12.
                        Man sieht sich auf https://wewoco.de

                        Kommentar


                          #13
                          Hallo again!

                          Zitat von Lukas M. Beitrag anzeigen
                          Mal die Daten von hier getestet? https://github.com/redaxo/redaxo/issues/2699
                          Die Seite habe ich besucht und dort folgenden Satz gefunden:

                          Also AutoTLS checkt die Verbindung auf den gängigen SMTP-Ports, die TLS unterstützen. Evtl. wird bei einem Port ein TimeOut bei DF verursacht? Könnt Ihr mal manuelle Verbindungen über die Ports 25 (ja manchmal unterstützt es TLS), 465 and 587 testen und schauen ob der Fehler dann auch auftritt?
                          Auf dieses Idee wäre ich nie gekommen, weil ja im Domainfactory Kundenmenü bei den Serveradresen explizit steht, dass man Port 465 nehmen muss für einen SSL-Versand. Und ich verlasse mich natürlich darauf, was dort steht.
                          Gut, ich habe das jetzt mit 5 verschiedenen Szenarien getestet. Text Mail mit Body im Skript, Textmail mit eingelesenem Body aus separater txt Datei, HTML Mail mit Body im Skript, HTML Mail mit eingelesenem Body aus separater HTML Datei und letzteres nochmal samt Bildern.

                          Alle 5 Tests verlaufen jetzt positiv. Die Mails werden versendet und kommen sofort an, wenn man Port 25 verwendet.

                          Ich bin also einen großen Schritt weiter. Danke, Lukas! Wie gesagt, ich hab mich auf die Angabe im Kundenmenü verlassen und hätte das nie hinterfragt.

                          Was ich jetzt gerne wissen würde: Was heißt das? Ist der Mailserver nicht richtig konfiguriert? Ist das PHPMailer Skript daran schuld? Oder was ist der Grund, wieso ich bei mir am Laptop Port 465 in Outlook eintragen muss für SSL Versand und bei PHPMAieler via ein Skript funktioniert nur Port 25. Das läuft doch beides über den selben Mailserver!?

                          Kommentar


                            #14
                            Zitat von Brombeermilchtrinker Beitrag anzeigen
                            Auf dieses Idee wäre ich nie gekommen, weil ja im Domainfactory Kundenmenü bei den Serveradresen explizit steht, dass man Port 465 nehmen muss für einen SSL-Versand. Und ich verlasse mich natürlich darauf, was dort steht.
                            [...]

                            Was ich jetzt gerne wissen würde: Was heißt das? Ist der Mailserver nicht richtig konfiguriert? Ist das PHPMailer Skript daran schuld? Oder was ist der Grund, wieso ich bei mir am Laptop Port 465 in Outlook eintragen muss für SSL Versand und bei PHPMAieler via ein Skript funktioniert nur Port 25. Das läuft doch beides über den selben Mailserver!?
                            Also die Mailserver sind ganz sicher richtig konfiguriert. Können Sie die jetzt genutzte funktionierende Konfiguration noch einmal posten ohne die Benutzerdaten?

                            Dann würde ich da gerne noch einmal drüber schauen und ggf. nachfragen. Ist noch eine andere Frage unklar?

                            Mit freundlichen Grüßen

                            Nils Dornblut
                            Blog - Facebook - Twitter
                            Communitybetreiber: domainfactory GmbH
                            Impressum / Pflichtangaben

                            Kommentar


                              #15
                              Zitat von Nils Dornblut Beitrag anzeigen
                              Also die Mailserver sind ganz sicher richtig konfiguriert. Können Sie die jetzt genutzte funktionierende Konfiguration noch einmal posten ohne die Benutzerdaten?
                              Gerne!

                              Also folgendes Skript versendet Mails ohne irgend ein Problem:

                              PHP-Code:

                              <?php

                              // HTML Mail mit ausgelagertem Inhalt in eigener html Datei


                              // Initialisierung der Seite:
                              namespace PHPMailer\PHPMailer;
                              header('content-type:text/html; charset=UTF-8');
                              error_reporting(E_ALL|E_STRICT);
                              mb_internal_encoding('UTF-8');
                              date_default_timezone_set('Europe/Vienna');

                              // Mailserverdaten mit existierender Mailadresse:
                              $S_user '[email protected]';
                              $S_password '1234';

                              // Absender:
                              $S_sender_mail '[email protected]';
                              $S_sender_name 'Max Mustermann';

                              // Empfänger:
                              $S_recipient_mail '[email protected]';
                              $S_recipient_name 'Eva Musterfrau';

                              //Einlesen des Mail Bodys:
                              $S_htmlFile 'mailbody.html';
                              $S_bodyContent file_get_contents($S_htmlFile);

                              // Betreff und Mailinhalt:
                              $S_subject 'foo';
                              $S_body $S_bodyContent;

                              // Einfügen der PHPMailer Bibliothek:
                              require 'inc/Exception.php';
                              require 
                              'inc/OAuth.php';
                              require 
                              'inc/PHPMailer.php';
                              require 
                              'inc/POP3.php';
                              require 
                              'inc/SMTP.php';

                              // Zusammenstellung des Auftrags:
                              $mail = new PHPMailer;
                              $mail->isSMTP();
                              $mail->Host "sslout.df.eu";
                              $mail->Port 25;
                              $mail->CharSet 'UTF-8';
                              $mail->setFrom($S_sender_mail$S_sender_name);
                              $mail->addAddress($S_recipient_mail$S_recipient_name);
                              $mail->isHTML();
                              $mail->Subject $S_subject;
                              $mail->Body $S_body;
                              $mail->SMTPSecure "TLS";
                              $mail->SMTPAuth TRUE;
                              $mail->Username $S_user;
                              $mail->Password $S_password;

                              // Mailversand:
                              if(!$mail->send())
                              {
                              echo 
                              '<p>Message was not sent.<p>';
                              echo 
                              '<p>Mailer error: '.$mail->ErrorInfo.'</p>';
                              }
                              else
                              {
                              echo 
                              '<p>Message has been sent.</p>';
                              }

                              ?>

                              Aufgefallen ist mir noch, dass ich für $S_sender_mail jede beliebige Adresse verwenden kann, solange sie mit @meine.domain.example.org endet. Bei Domains, die nicht mir gehören bzw. die es gar nicht gibt, bekomme ich keine Fehlermeldung sondern ein "Message has been sent.", diese Mails kommen aber nie an. Während ich es mit der PHP Funktion mail() schaffe, Mails erfolgreich zu versenden, die als Absender völlig fremde oder real nicht existierende Domains angeben. (Abgesehen davon, dass dies die Spam-Einstufung natürlich erhöht!). Würde mich interessieren, woran das liegt.

                              Dann würde mich noch interessieren, wieso bei Domainfactory kein DKIM Eintrag möglich ist (falls das stimmen sollte), wenn dies angeblich wichtig ist für eine bessere Mailreputation.

                              Die Hauptfrage bleibt aber: Wieso führt Port 465 zu einem Timeout Error ohne Mailversand, obwohl das der richtige Port wäre ... während die Portangabe 25 die Mails auf die Reise schickt.

                              MfG

                              Der Brombeermilchtrinker

                              Kommentar

                              Lädt...
                              X