Zum Inhalt springen

WordPress sendet keine Mails – Lösung

mail

Manches Problem lässt sich dann doch schneller lösen als zunächst vermutet. WordPress hatte seit Kurzem keine E-Mails mehr verschickt wenn ein neuer Kommentar eingegangen ist. Ebenso blieb die Benachrichtigung für Leser aus, die eigentlich Folgekommentare abonniert hatten.

Nichts ist dümmer, als wie wenn der Admin immer wieder ins Dashboard von WordPress schauen muss, ob eventuell neue Kommentare – ob Moderation oder nicht – eingegangen sind. Gleichmaßen ist es eine Hemmung jeglicher Diskussion, wenn Leser nicht informiert werden, dass es einen weiteren Kommentar zu jeweiligen Artikel gibt.

Die Lösung – WordPress verschickt wieder Mails

Tatsächlich ist es so, dass es wohl so, wenn WordPress auf einem eigenen Server betrieben wird es dazu kommen kann, dass keinerlei E-Mails mehr verschickt werden. Als Ursache dafür ist die ggf. deaktivierte PHP-Funktion mail(). Um dies herauszufinden kann man entweder kurzzeitig das WordPress-Plugin  WordPress phpinfo() laden und aktivieren oder an einer bestimmten Stelle im Blog den Befehl <?php phpinfo(); ?> in den Code einfügen.

Über zahlreiche Beiträge, unter anderem auch in einschlägigen Foren, bin ich letztlich bei Kevin von Weizenspr.eu gelandet der genau über dieses Problem berichtet und die Lösung anbietet.

Kurz zusammengefasst: Wenn die Aktivierung der PHP-Funktion mail()  seitens des Providers nicht möglich sein sollte hilft ein kleiner Eingriff in den Dateien wp-config.php und wp-includes/pluggable.php der WordPress-Installation.

In der wp-config-php den nachfolgenden Codeblock einfügen und entsprechend den eigenen Maileinstellungen anpassen. Maileinstellungen für den in den Einstellungen von WordPress hinterlegten E-Mail-Adresse verwenden. Dabei spielt es keine Rolle ob es eine Adresse der eigenen Domain (hier z.B. : xx@nicht-spurlos.de) ist oder eine andere. Dies ist ggf. auch ein Problem von WordPress über das im WP-Forum schon berichtet wurde.

//!!! use SMTP
function smtp_wp_mail($phpmailer) {
  $phpmailer->IsSMTP(); // telling the class to use SMTP

  $phpmailer->Host       = "mailserver-eintragen";      // set the SMTP server host
  $phpmailer->Port       = 465;                     // set the SMTP server port
  $phpmailer->SMTPSecure = "ssl";                   // enable SMTP via SSL
  $phpmailer->SMTPAuth   = true;                    // enable SMTP authentication
  $phpmailer->Username   = "benutzername"; // set the SMTP account username
  $phpmailer->Password   = "password";        // set the SMTP account password
}

Die zweite Änderung ist dann die wp-includes/pluggable.php ab der Zeile 404 / 405 (kann bei Updates etc. natürlich abweichen. Einfach diese Textstelle suchen:

// Set to use PHP's mail()
$phpmailer->IsMail();

und hiermit ersetzen:

// Set to use PHP's mail()
// $phpmailer->IsMail();

//!!! use SMTP
smtp_wp_mail($phpmailer);

Anschließend abspeichern, auf den Server hochladen und fertig.

Zur eigenen Sicherheit habe ich die Codezeilen hier nochmals zusammengefasst, weil bei nächsten WordPress wird die wp-includes/pluggable.php  ggf. wieder überschrieben und auswendig weiß ich dann nicht mehr wo ich die  Anpassungen gefunden hatte.

Jetzt klappts mit den Mails wieder und als Admin kann man sich auch mal wieder zurücklehnen und warten bis Benachrichtigungen eingehen. Und die Leser…. sie erhalten auch wieder Infos zu nachfolgenden Kommentaren. Soll soll es sein :-) .

Schlagwörter:

17 Gedanken zu „WordPress sendet keine Mails – Lösung“

  1. Das freut mich zu lesen, dass alles wieder wie gewünscht klappt und danke für die Anleitung, falls man es mal brauchen sollte.
    Dann mal munteres zurücklehnen, dir! :D

    1. @Alex: So weit lehne ich mich dann auch wieder nicht zurück :-) . Doch wenn es wieder funktioniert ist das schon ein „besseres Gefühl“.

      @Mario: Auch mit Deiner Unterstützung beim Test, ja. ;-)

      @Markus: Ich habe einen Managed Server ja, da kann ich auf die php.ini nicht so zugreifen, müsste das über den Provider machen lassen. Das ist zwar kein Problem, aber auf diese Weise lernte ich auch wieder etwas dazu. Schaden kann das ja nie.

      Danke aber für Deine Ergänzungen. Die sind für all jene wichtig, die dann lieber an der php.ini editieren ;-) .

  2. Schön, dass Du Dein Problem so schnell lösen konntest. Aber lese ich oben richtig, dass Du Deinen eigenen Server betreibst? Dann solltest Du die PHP-Funktion mail() doch einfach in der php.ini aktiviern können. Bei mir finde ich da nämlich folgen Abschnitt:
    <pre lang="php">[mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25

    ; For Win32 only.
    ;sendmail_from = markus@cowboy-of-bottrop.de

    ; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
    ;sendmail_path =
    sendmail_path = /usr/local/sbin/sendmail -t -i -f mail@foo.bar

    ; Force the addition of the specified parameters to be passed as extra parameters
    ; to the sendmail binary. These parameters will always replace the value of
    ; the 5th parameter to mail(), even in safe mode.
    ;mail.force_extra_parameters =

    Zudem gibt es noch immer die Möglichkeit, die php.ini über die .htaccess zu ändern, oder über jede beliebige PHP-Datei mit der Funktion ini_set() Änderungen an der php.ini vorzunehmen.

  3. Für diesen Beitrag und alle die daran mitgewirkt, sollte man dich/euch nackich über den Dorfplatz treiben ;)

    Wie du schon richtig geschriebenen hast, ist das nach einen Update alles wieder weg. Core-Dateien fast man nicht an, da es für (fast) alles einen Hook gibt.

    Der Hook den wir brauchen, nennt sich ‚phpmailer_init‘. Ansprechen (add_action), Daten ändern, geänderte Daten zurück geben.
    Ein Blick in PHPMailer und die dortige Methode ‚IsSMTP‘ verrät uns das diese Methode lediglich den öffentlichen Wert ‚Mailer‘ auf ’smtp‘ setzt. Können wir auch ohne Methoden-Aufruf: $phpmailer->Mailer = ’smtp‘;

    Und hier das passende Gist: https://gist.github.com/RalfAlbert/3794924

    1. @Ralf: Dorfplatz? Das kann mir hier in HH schon mal nicht passieren :-D .
      Spaß beiseite – Du hast leicht reden Ralf, wenn man keine andere Lösung findet nimmt man eben das was man findet. Würde WordPress in so mancher Richtung nicht so „steif“ sein wären derartige Einstellungen auch per Backend möglich. Schließlich – und das nehme ich mal stark an – gibt es den „Fehler“ sicher öfter.

      Aber danke für die weitere Lösung ;-) .

    2. Danke!
      Das Plugin hat mein Problem gelöst. Es funktionierte nämlich überhaupt kein Form xy Flugin, keine Mail konnte gesendet werden und ich hatte zunächst keine Erklärung. Zumindest konnte ich annehmen, dass es nicht an den Form Plugins lag, denn diese geben die darin angegebene Email Adresse offenbar „nur“ an WordPress weiter und da müsste dann der Hund begraben sein. Ich wäre irgendwann auch drauf gekommen, im WordPress Rep. zu suchen nach irgendwas, das mit Mail zu tun hat, nachdem ich herausgefunden hätte, wonach ich suchen hätte sollen… Ich hoffe, ich kann mal zurück geben, was ich von all den Freaks, leidenschaftlichen Codern und kompetenten Leuten so alles an Wissen erhalten habe. Danke nochmal.

  4. Steif? WP ist gar nicht steif. Wenn dem so wäre, gäbe es keine Hooks und du müsstest tatsächlich im Core rumfuhrwerken.

    Grundsätzlich sollte dieser Fall eigentlich nicht vorkommen. Die PHP-Funktion mail() hat die Wahl zwischen Sendmail und SMTP. Sendmail ist ein auf dem Server installiertes Programm und sorgt für den Mailversand. Ist Sendmail nicht oder falsch konfiguriert, muss man seine Mail-Daten an einen externen Mail-Server schicken der ein funktionierendes Sendmail konfiguriert hat.

    Ein Server ohne funktionierendes Sendmail ist eigentlich Unsinn. Mails sind quasi eine Grundfunktion von Servern.
    Seine Daten an einen externen Mail-Server zu schicken, ist eher ein Fallback. Denn der Absender ist z.B. wordpress-at-nicht-spurlos.de, der Mail-Server von dem die Mail verschickt wurde ist hingegen jedoch z.B. Gmail. Nicht wenige Spamfilter springen auf diese Konfiguration an und filtern solche Mails aus.

    Man kann eine Software nicht für jeden erdenklichen Fall ausstatten. Dafür gibt es in WordPress halt Plugins. Zum Beispiel WP Mail SMTP ( https://wordpress.org/plugins/wp-mail-smtp/ ). Bevor man irgend eine Core-Datei anfasst, sollte man unbedingt ins Plugin-Repository schauen ob nicht schon jemand anderes das gleiche oder ein vergleichbares Problem hatte (gefunden via Google mit den ersten Suchtreffer)

    Nachdem ich mir jetzt die Links im Artikel auch noch mal alle durchgelesen habe, weiß ich wieder warum Falschinformationen im Internet so langlebig, fast unsterblich, sind. Im Artikel auf weizenspr.eu hatte schon jemand anderes die richtige Idee mit einem Plugin. Da der Kommentar vom 7. März 2012 stammt, gehe ich davon aus das er schon existierte als du den Beitrag geschrieben hast. Du aber ohne groß nachzudenken per Copy&Paste irgendwas verbreitest von dem du nicht wirklich viel Ahnung hast.

    Ich gehe davon aus das es nicht ganz so lange dauern wird bis der nächste kommt bei dem die Mails nicht mehr verschickt werden und das er dann die gleiche Lösung noch einmal in seinem Blog verbreitet.
    „Beim Kevin und beim Thomas hat es auch funktioniert. Dann MÜSSEN die doch Recht haben…“ Das sind in etwa die Antworten die man bekommt wenn man Support für WP leistet. Ist es dann noch ein Wunder warum so viele Entwickler sich lieber ins stille Kämmerlein zurückziehen und unter sich bleiben anstatt anderen zu helfen?
    Nimm es mir nicht übel, ich will hier niemanden anmeckern. Aber das sind u.a. die Gründe warum ich seit einigen Jahren um fast jedes Support-Forum einen Bogen mache. Man macht sich die Arbeit, nimmt sich die Zeit und bekommt kein Danke. Stattdessen bekommt man oftmals sogar noch dumme Antworten und/oder es wird dann doch auf eine ganz andere (schlechtere) Lösung zurück gegriffen weil der andere Blog hübscher ist oder schon länger im Feedreader. Oder weil man schlichtweg zu faul war alles zu lesen.

    Um auf dein ursprüngliches Problem zurück zu kommen (Mails werden nicht verschickt), googel mal nach WP_DEBUG. Gibt genug Anleitungen wie man den Debug-Modus bei WP einschaltet. Dann gibt es auch Fehlermeldungen die den letzten hilfsbereiten deutlich mehr helfen als eine lapidares „Mails werden nicht mehr verschickt (sucht euch bitte einen von den 100 möglichen Gründen raus und nennt mir eine Lösung die mein Problem beseitigt)“. Ich gehe nämlich mal davon aus das dein Problem eher im Save-Mode von PHP liegt.

    1. @Ralf: Danke für Deine sehr ausführlichen Schilderungen. Ich bestreite nicht, dass Du an mancher Stelle recht hast, allerdings vermute ich, dass Du Dein Wissen über den „Motor von WP“ etwas zu sehr als Voraussetzung machst. Es gibt eben Anwender und Programmierer. Ich gebe zu, ich gehöre zu den ersteren.

      Ja es gibt auch ein Plugin das SMTP ermöglicht. Aber… es ist eben wieder ein Plugin mehr. Und extra ein Plugin zu installieren um einen „Fehler“ zu beseitigen sah ich als nicht wirklich sinnvoll an. Vielleicht liege ich mit der Meinung auch falsch, das streite ich gar nicht ab.

      In Sachen diverser Foren magst Du auch Recht haben. Trotzdem ist es so, dass man entweder gar keine Antwort bekommt oder eine in einer eher herabschauenden Art nach dem Motto „hilf Dir selbst“. Ist auch nicht unbedingt richtig aber natürlich Ansichtssache. Man kann es eben nicht jedem Recht machen, auch in Foren nicht. Das hat allerdings auch zur Folge, man behilft sich mit anderen Mitteln wie eben diesem Eingriff in den Core.

      Ich werde vor dem Absenden dieses Kommentars die Änderungen im Core nochmals rückgängig machen und schau mal, ob Du dann benachrichtigt wirst. Es wurde inzwischen an der php.ini editiert und vielleicht war es das ja gewesen. Dann war alle Aufregung umsonst.

    2. @Ralf: Der Tipp mit dem PHP Save-Mode hat mir aus der Patsche geholfen.
      Danke. Trotzdem mag ich die aggressive Art Ihrer Kommentare nicht. Aber das ist wohl der Preis für die Hilfe?

  5. @Thomas: Ja, ich sehe es sehr stark aus der Sicht eines derjenigen, die sich mit dem Code auskennen. Aber das ist ja auch der Punkt. Ich weiß worüber ich schreibe. Ich gehe ja auch nicht hin und gebe anderen Tipps wie sie ihren Bandscheibenvorfall selbst heilen können. Und ich würde mich auch schwer hüten zu versuchen jemanden zu erklären wie er die Bremsen an seinem Auto repariert.

    Was spricht gegen ein Plugin? Ein Plugin hat den enormen Vorteil das man es nach Bedarf aktivieren und wieder deaktivieren kann. Man kann es sogar löschen ohne eine Zeile Code bearbeiten zu müssen.
    Wenn du Angst hast das du die Übersicht verlierst, pack all die kleinen Funktionen und Helferlein in ein einzelnes Plugin. Das kann auf Dauer aber auch etwas unübersichtlich werden, vor allem wenn man nicht alle ausreichend dokumentiert und später nicht mehr genau weiß was Funktion X für eine Aufgabe hat.
    Eventuell ist die Toolbox von Sergej Müller ( ) ja eine Alternative.

    Ja, die Mail mit der Kommentarbenachrichtigung ist angekommen. Lag also wohl nicht an WordPress. Das ist aber so eine typische Haltung von Hilfesuchenden. Etwas geht nicht, dann muss WordPress schuld daran sein. Erklärt man ihnen wie man den Debug-Modus einschaltet damit man mal eine Fehlermeldung zu Gesicht bekommt, bekommt man als Antwort „Geht immer noch nicht“.
    Um mal beim Auto-Beispiel zu bleiben: Ich bringe mein Auto in eine Werkstatt. Nicht nur das mir das meiste Werkzeug für eine Reparatur fehlt. Mir fehlt vor allem das Wissen wie man ein Auto repariert. Nun ist Autoreparatur keine Raketenwissenschaft. Das meiste könnte ich mir anlesen und mit etwas Ausprobieren vielleicht auch selber hin bekommen.
    Bei Software ist es so, dass die meisten Anwender weder Zeit noch Mühe investieren wollen. Aber soll man bei jeder Frage erst einmal sämtliche Grundlagen durchkauen? Und vor allem, soll man sich die Mühe machen erst einmal umständlich alle 103 mögliche Fehlerquellen abzuklopfen?
    Ich glaube nicht das jemand auf die Idee kommt sein Auto in die Werkstatt zu bringen und zu verlangen das es sofort und kostenlos repariert wird. Kosten darf die Reparatur nichts, weil es war ein Geschenk von Oma. Im Internet ist aber eben diese Erwartungshaltung an allen Ecken und Enden anzutreffen. WordPress kostet nix, also darf der Support auch nix kosten. Wer freundlichen, kompetenten und schnellen Support haben will, muss dafür bezahlen. Wer alles umsonst haben will, muss damit leben das die beste Antwort die er bekommt vielleicht eine pampige ist.

    1. @Ralf: Du siehst es einfach mit der gewissen Verbissenheit eines Programmierers :-) . Wieso sollte ich Angst haben ein Plugin zu installieren bzw. Angst haben den Überblick zu verlieren? Aber als Programmierer solltest Du wissen, dass jedes Plugin mehr eine „Last“ bedeutet, von einer gewissen Gefahr will ich gar nicht reden. Außerdem – Plugins die mehr als 12 Monate nicht mehr gepflegt werden liegen mir einfach nicht so.

      Zu Deiner Stellungnahme bezüglich „kostenlos“. Sorry, aber ich kann keine Open-Source-Software bereitstellen und mich dann beschweren „…da zahlt ja keiner was“. Der Vergleich beißt sich, aber ich respektiere Deine Meinung. Man sollte vielleicht einen „Spenden-Button“ im Forum installieren, dann könnte man ein „Danke“ schicken. Leider Fehlanzeige – dann aber bitte nicht meckern.

      Mit dem Forum und dem Autovergleich ist es ähnlich. Wenn ich in einem Autohaus eine Frage habe werde ich nicht „schräg von der Seite angemacht“ sondern erhalte eine saubere Antwort. Ich verlange doch nicht zuviel wenn ich eine Frage stelle oder? Doch? Warum dann ein kostenloses Forum. Noch mal sorry, kann ich nicht nachvollziehen.

      Was die Technik betrifft bist Du sicher im Recht. Aber bitte lass es generell von jedem Anwender das gleiche Verständnis zu erwarten. Oder warum machst Du den Kundendienst an Deinem Auto nicht selber? Kannst Du es nicht? :-) Ich denke Du verstehst was ich damit sagen will. Wenn nicht, es soll keine Kritik an Deiner Person als solches sein sondern nur klarstellen, nicht jeder weiß und kann alles, aber eine Frage stellen, das sollte er schon dürfen ;-) .

      @Kenny: Willkommen bei Nicht spurlos. Dich trifft hier an dem Disput keine „Schuld“ wenn man davon überhaupt sprechen sollte. Den Hook habe ich durchaus gelesen (ich lese Artikel immer ganz :-) ), aber ich habe wie schon mehrfach erwähnt eben nicht das technische Verständnis und habe mir eben nicht mit diesem beholfen. Inzwischen läuft alles wieder perfekt.

  6. Der Kevin würde sich auch mal kurz einmischen. Wer den Artikel vom Kevin gelesen hat, wird das Update am Ende des Artikels bemerkt haben. Genau dort wird auf den Hook eingegangen (den ich selbst nicht gefunden hatte). Dieser ist natürlich zu bevorzugen!

    Zweitens: Dass der Webserver und der Mailserver kombiniert sind, kenne ich persönlich nur aus dem privaten Hosting. In jedem ordentlichen Unternehmen sind diese beiden Funktionen natürlich strikt getrennt. Normalerweise versucht man aktiv zu VERHINDERN, dass eine Anwendung ungefragt und ohne Kontrolle E-Mails verschicken kann. Soviel zu meinen Erfahrungen aus dem Rz-Umfeld.

  7. @Thomas: Warst du überhaupt schon mal in einer Autowerkstatt?
    Klar doch. Wenn du hingehst und dem Meister sagst „Der Scheinwerfer vorne links geht nicht.“, wird er sich mit Sicherheit die Zeit nehmen und dir alle möglichen Ursachen aufzählen und dann auch noch wie du sie reparierst. Natürlich macht er das komplett gratis und bietet dir auch noch ne Tassee Kaffee an. Und falls gar nichts mehr geht, lässt er dich zum Trost eine Runde auf sein Einhorn reiten…

    Ja ne is klar. Alle die etwas Ahnung haben, empfehlen dir ein Plugin zu verwenden und zählen dir auch noch die Gründe auf warum es besser ist. Das machen wir natürlich nur deshalb, weil wir so gerne dämlich kichernd vor dem PC sizten und uns freuen wenn wieder mal jemand auf den Trick mit den Plugins reingefallen ist. Damit haben wir ja schon so viel Last erzeugt, dass die Computer des Pentagon die Segel gestrichen haben…

    Das ist der Punkt an dem jeder der seine Hilfe anbietet kurz über den verlorenen Hopfen&Malz trauert. Um sich dann zu sagen „OK. Du hast Recht, ich meine Ruhe. Und Tschüss!“
    Falls du dich jetzt wunderst warum du eine doofe und pampige Antwort bekommen hast, denk mal nach.

  8. Moin,

    Fakt ist: Das editieren der Core Daten hat soviel wie fast noch weniger gebracht :-)
    Plugin installiert, aktiviert, konfiguriert.

    Läuft und schnurrt wie ein Kätzchen!!
    Also liegt der Fall auf der Hand!!

    Noch Fragen??
    Danke an Ralf (aber auch an Thomas für die Mühen)

  9. Pingback: WooCommerce einrichten Teil 7 – E-Mail-Versand und -Templates » MarketPress Deutschland

Schreibe einen Kommentar zu Ralf Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Du kannst Dich informieren lassen wenn es Folgekommentare gibt. Du kannst aber auch abonnieren ohne zu kommentieren.