it-swarm.com.de

PHP mail () funktioniert nicht

Ich möchte ein einfaches Anmeldeformular mit Aktivierungsmail usw. erstellen. Aber aus irgendeinem Grund verschickt mail () die E-Mails nicht oder meine 3 verschiedenen E-Mail-Konten (Hotmail, Gmail, Yahoo) empfangen sie nicht und legen sie deshalb nicht in den Spam-Ordner.

Code:

<?php
    $mailto = '[email protected]';
    $subject = 'the subject';
    $message = 'the message';
    $from = '[email protected]';
    $header = 'From:'.$from;

    if(mail($mailto,$subject,$message,$header)) {
        echo 'Email on the way';
    }
?>

Jedes Mal, wenn "E-Mail unterwegs" ausgegeben wird, gibt mail () "true" zurück, oder? Ich verstehe es wirklich nicht, ich habe sogar versucht, meinen kleinen Schnatz auszuschalten (obwohl ich SMTP nicht blockiert habe).

21
Rivers

Siehe dieser Artikel von Jeff Atwood .

Kurz gesagt: Nur weil Ihr Code die E-Mail an einen Mail Transfer Agent übergeben hat, bedeutet das nicht, dass er zugestellt wird. Ja, mail() Rückgabe von "true" bedeutet "akzeptierte für die Zustellung" - was bedeutet "Sieht aus wie eine E-Mail, ich werde versuchen, dies zuzustellen", nicht "es wird zugestellt". Sogar das Handbuch für mail() sagt :

Es ist wichtig anzumerken, dass die Mail, nur weil sie zur Zustellung angenommen wurde, NOT bedeutet, dass die Mail tatsächlich das beabsichtigte Ziel erreicht.

Soooo: Überprüfen Sie Ihren MTA (wird die E-Mail von Ihrem lokalen Computer gesendet?), Versuchen Sie, an eine lokale Adresse zu senden (wenn die Adresse lokal ist, wird sie zugestellt?), Versuchen Sie, eine E-Mail von Ihrer E-Mail zu senden Versuchen Sie, den Client mit denselben Einstellungen wie Ihr PHP -Skript an einen kleineren Mail-Hoster zu senden, mit dem Sie Spam-Schutz deaktivieren können (wird er außerhalb Ihres Netzwerks geliefert?). Lesen Sie auch diesen Artikel und überprüfen Sie die dort genannten Punkte.

13
Piskvor

Möglicherweise ist Ihr Server nicht für die Verarbeitung von mail() konfiguriert.

<?php
    print phpinfo();  
?>

und schau auf sendmail_path

4
DENIEL

Möglicherweise müssen Sie den Kopfzeilen korrekte Zeilenendezeichen hinzufügen. Es kann \n oder \r\n sein

1
Brombomb

Ich hatte das gleiche Problem auf Ubuntu und löste es nach dem nächsten Tutorial:

http://www.nixtutor.com/linux/send-mail-with-gmail-and-ssmtp/

Ich hoffe es funktioniert auch für dich.

0
mgrdiez

Überprüfen Sie Ihre phpinfo und/oder php.ini auf Ihre E-Mail-Einstellungen und stellen Sie sicher, dass Sie E-Mails mit dem Programm senden können, das von PHP verwendet werden soll. Die Funktion ist erfolgreich, wenn der Befehl ausgeführt wird, aber nicht weiß, ob die Mail tatsächlich ausgegangen ist.

0
ldg

Überprüfen Sie das Mail-Protokoll Ihres Mail-Servers. Auf Unix-Systemen ist dies im Allgemeinen/var/log/maillog. Unter Windows weiß wer, aber irgendwo sollte es ein Protokoll geben. Wenn Mail TRUE zurückgibt, hat der Mailserver, mit dem er sich verbindet, die Mail für eine eventuelle Zustellung angenommen. Danach ist mail() in keiner Weise mehr involviert und es liegt an den SMTP-Servern, die eigentliche Bereitstellung durchzuführen. 

In der Praxis bedeutet mail(), dass Sie einen Brief den Block hinuntergehen und ihn in einem Briefkasten ablegen. Alles, was danach läuft, liegt absolut außerhalb des Umfangs und der Kontrolle von PHP.

0
Marc B

Wenn dies ein Linux-Server ist, ist er wahrscheinlich so eingerichtet, dass er an die lokale Mail-Warteschlange gesendet wird. Als ich dieses Problem hatte, funktionierte es, indem ich einen MX-Eintrag auf dem DNS-Server hinzufügte, der von den Linux-Servern verwendet wird, der auf den Mail-Server unseres ISP verweist.

0
Brad Mace