2016-07-25 16 views
2

ich auf einem 1 & 1 gehosteten Server ein einfaches Skript bin mit:PHP mail() "Funktion nicht gesendet Email

$recipient = "[email protected]"; 
$sender_name = $_POST['name']; 
$sender_email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

$headers = "MIME-Version: 1.0"."\r\n"; 
$headers .= "Content-type:text/html; charset=UTF-8"."\r\n"; 
$headers .= "From: {$sender_name} <{$sender_email}>"."\r\n"; 
$headers .= "Reply-to: {$sender_name} <{$sender_email}>"."\r\n"; 

mail($recipient, $subject, $message, $headers); 

..aber aus irgendeinem Grund bin keine E-Mails empfangen, noch irgendwelche Fehler gemäß PHP mail() function not sending email anweist.

Ich dachte, dass dies ein Serverproblem sein kann, aber 1&1 states, dass es vollständig unterstützt wird. Ich habe auch E-Mails von diesem Server/Hosting gesendet, bevor ich nur einen Empfänger, ein Thema und einen Körper benutze, und daher bin ich ziemlich unsicher, warum es jetzt nicht funktioniert!

UPDATE

Senden ohne Header, d.h .:

mail($recipient, $subject, $message); 

..does arbeiten, so dass es ein Problem sein, mit Verwendung der Header erscheinen würde?

+0

sind Ihre 'smtp'- und' pop'-Server konfiguriert? –

+0

@MridulKashyap Ich würde es nicht wissen, aber wie ich schon sagte - es hat vorher funktioniert, ohne dass ich sie konfigurieren musste –

+0

Was gibt die Funktion mail() zurück? richtig oder falsch? –

Antwort

3

Es kann viele Gründe geben, zum Beispiel sollten Sie untersuchen, was SPF ist.

Die $ sender_email kann keine Adresse sein. Sie können beispielsweise keine Google Mail-Adresse eingeben und E-Mails senden, die sich als Absender ausgeben. Ohne Authentifizierung dürfen Sie keine E-Mails im Namen dieser Adresse senden , weil ich zum Beispiel E-Mails senden konnte, die Ihre Adresse in die von, pretenting zu Ihnen sein, wenn ich nicht bin (ich versuchte, einfache Wörter zu verwenden)

Sie sollten in der From etwas verwenden, das in @ yourdomain.com endet, und richten Sie SPF ein, damit die IP Ihres Servers E-Mails für diese Domain senden kann. ODER sonst senden Sie E-Mails über SMTP (mit PHPmailer, zum Beispiel, es ist sehr einfach)

+0

Ah ja das macht Sinn Danke für die Info –

0

Fehler im Header hat Auswirkungen auf die E-Mail-Zustellung. Wenn Sie zum Beispiel E-Mails mit falschen Headern senden, nehmen wir an, die E-Mail des Benutzers lautet [email protected] und sein Name lautet "Benutzerbenutzer". Sie senden die E-Mail an [email protected], wodurch die E-Mail möglicherweise ausgelöst wird in Spam gehen oder überhaupt nicht akzeptiert, wenn es auf dem Server nicht übereinstimmt.

Google Mail hat zum Beispiel einen Namen für jede E-Mail-ID. Wenn Sie einen falschen Namen mit der E-Mail angeben, besteht die Möglichkeit, dass die E-Mail nicht im Posteingang oder manchmal sogar in Spam erscheint.

"Aber in dem Link, den ich angehängt habe, verwendet das Beispiel einen 'from' Header, der durch eine Formulareingabe gesetzt wird?"

Wenn Sie möchten, dass Ihre Benutzer E-Mails an Sie senden können, sollten Sie Ihre eigene E-Mail-Adresse als Absender-E-Mail verwenden. Z.B. Wenn sich Ihre Website auf website.com befindet, konfigurieren Sie eine E-Mail wie "[email protected]" und konfigurieren Sie Ihr Skript so, dass es als Von-Header verwendet wird. Sie können es an Ihre eigene E-Mail in der gleichen Domain (website.com) oder anderen senden andere E-Mail, die Sie autorisieren. Sie können die tatsächlichen Details der Benutzer in der Mail hinzufügen. das wird die erfolgreiche Zustellung der Email immer gewährleisten.

Verwandte Themen