Mail-function PHP funktioniert nicht mehr?
Ich habe vor ca. 1 Woche eine Funktion auf meiner website geschrieben mit der man mir Mails senden kann. Diese kommen aber nicht mehr an. Ohne dass ich etwas geändert habe funktioniert es nicht mehr. Folgendes ist der Code:
testmail.inc.php:
<?php
$msg = <<<String content here String;
$header = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
mail("", "test message", $msg, $header);
header('Location: ../home.php?message%20sent');
Natürlich habe ich das erste Feld in der Funktion ausgefüllt, aber ich möchte meine E-Mail Adresse nicht zeigen.
Vor ca. 5 Tagen hat das alles noch funktioniert. Kann mir wer helfen?
Hier ist die Website
Ps: Bitte nehmt die Cookies nicht an. Danke ;)
4 Antworten
Die mail-Funktion sollte man nicht verwenden. Sie sendet unauthentifiziert E-Mails über das lokale Mail-System - das kann je nach Konstellation zwischen sendendem und empfangenden Server problematisch sein.
Beispiel: der empfangende Server lehnt unauthentifiziert gesendete Mails ab. Das ist ein Antispam-Kriterium was durch den Betreiber des empfangenden Servers jederzeit gesetzt werden könnte. Solange Du diesen nicht selbst betreibst, kann das einer von vielen Gründen sein wieso es "plötzlich" nicht mehr geht. Ebenso kann der sendende Server (mit deiner Webseite) inzwischen auf ein oder mehreren Blacklisten stehen, weshalb der empfangende Server das ebenfalls nicht mehr zulässt.
Die optimale Lösung wäre, wenn Du statt mail() den phpmailer verwendest:
https://github.com/PHPMailer/PHPMailer
Damit kannst Du authentifiziert E-Mails auch direkt über den Mail-Server deines Mail-Dienstleisters schicken - und sie kommen auch sicher an.
Die mail() - Funktion kann auch fehlschlagen, wenn du mit if (mail(...)) { ...nachschaust, was da raus kommt, erfährst du zumindest, ob es schon da fehlschlägt.
Ansonsten musst du bei dem Provider schauen, es gibt Provider, die Mails per PHP begrenzen und wo du ggfs. ein Limit erst erhöhen musst, um weitere Mails zu senden, oder aber es braucht im mail()-Aufruf den letzten Parameter mit einem "-f absender@example.com"...
PS: Wenn du das schon ein paar getestet hat, schaue vorher mal in deinem Spamordner, evtl. liegen die da jetzt...
Das erste Problem liegt darin, dass du vor dem PHP Tag schon ein PHP-Dokument inkludierst (testmail.inc.php). Das erkennt der Webserver natürlich nicht. Wenn dies nicht der Fehler ist, kann es auch an deinem Mail oder Webhostingprovider liegen.
Vor dem PHP-Tag steht nur der Dateiname. Der sollte ganz sicher nicht zum Code gehören, es ist nur ein Formatierungsfehler in der Fragestellung.
Dieses Dokument ruft man direkt so auf. Auserdem hat das sonst immer geklappt
Diese Variante sehe ich zum ersten mal. Ich mache dies immer so: https://www.w3schools.com/php/php_includes.asp
Aber bei jedem anderen script funktioniert es, daran sollte es also nicht liegen
Welche Rückgabe liefert die mail-Funktion und was sagt dir das Error Reporting?
Nichts. Es gibt keine Fehler und alles funktioniert, bis auf dass ich keine Mail bekomme
Sry, sie sind im Spam ordner gelandet. Aber ich gucke mir mal phpmailer an. das klingt interessant🤔