Fang PHP mail () - Fehler-und zeigen angemessene user error message
Schreibe ich eine Recht einfache registrieren php-Skript, dass verwendet PHP ' s built in mail()
- Funktion, um E-Mail-Benutzer ein Aktivierungs-link.
Das problem ist, dass ich fangen kann, die normalen Fehler wie E-Mail-Formatierung, aber sobald es ausgelöst wird, deaktiviert, um die server und sagen, ein user hat eine E-Mail-Adresse fehlschlägt, ich weiß nicht, wie fangen Sie diesen Fehler, und dem Benutzer mitteilen, was passiert ist.
Zum Beispiel im moment bekomme ich diese:
Warning: mail() [function.E-mail]: SMTP server response: 554
: Recipient address rejected: Relay access
verweigert in ** on line 70
Irgendwelche Ideen was ich tun könnte, um Fehler wie diese? Ich bin mir bewusst, der mit dem @ - Zeichen unterdrückt den Fehler, aber ich irgendwie mehr tun wollen als das, und behandeln Sie das Problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie den boolean-Ergebnis, einen Fehler zu entdecken:
Dann Sie wollen finden Sie heraus, welche internen Fehler das problem verursacht, so verwenden:
Beachten Sie, dass dies funktioniert mit php 5.2 weiter nur.
Gibt es keine Möglichkeit zu überprüfen, Lieferung oder finden Sie unter transport-Fehler-E-mails mit PHP. Sie benötigen ein pop3-polling-handler für dieses.
Einen trivialen Fehler, die ich litt, war einfach ein fehlen von 'sendmail' in meinem system.
Schließlich habe ich installiert exim4 und konfiguriert - und dann php ' s mail(...) haben einwandfrei funktioniert.
Siehe auch:
Du willst zu fangen, so viel wie Sie können, bevor Sie Sie senden Sie die E-mail, desinfizieren Sie Ihre Eingaben, um sicherzustellen, dass es wirklich das ist, was Sie erwarten, dass es
Können Sie
filter_var
, um zu überprüfen, dass die E-Mail-Adresse ist wirklich eine Adresse,überprüfen Sie, dass ganze zahlen fällt innerhalb Ihres zulässigen Bereichs liegen, etc.
Legen Sie die E-mail-header " von " - Adresse zu einem Ort, wo Sie überprüfen können für fehlerhafte Lieferungen:
Können Sie auch überprüfen, dass die E-mail durchgeführt, da erwartet:
Und eine Letzte Sache, die Sie wahrscheinlich nicht wollen, um Warnungen anzeigen in einer live-Umgebung, können Sie schalten Sie diese aus, entweder über die ini-Datei oder verwenden Sie
ini_set
.Besten wäre die Verwendung einer Bibliothek wie Swift Mailer, die exceptions wirft, die leicht gehandhabt werden können.