webentwicklung-frage-antwort-db.com.de

problem mit dem 'From'-Header von PHP-Mail

Ich baue eine Website, die bei der Registrierung eine E-Mail an einen Benutzer sendet.

Mein Code (der Gist davon):

<?php
$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! \nThis is a simple email message.";

$headers = "From: [email protected]";
$headers .= "\r\nReply-To: [email protected]";
$headers .= "\r\nX-Mailer: PHP/".phpversion();

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

echo "Mail Sent.";
?> 

das Problem ist, dass bei der Zustellung der Mail der from-Header [email protected] bleibt, während Reply-to den angegebenen Wert erhält.

box123.bluehost.com ist der Hostname des Servers, auf dem die Website gehostet wird.

Was mache ich falsch? Was kann ich tun, um die Absenderadresse wie die Antwortadresse zu erhalten?

Ist es etwas, was ich falsch mache, oder spielt der Webhost schlecht?

28
jrharshath

Bearbeiten: Ich habe gerade festgestellt, dass Sie versuchen, eine Gmail-Adresse als Wert von from zu verwenden. Das wird nicht funktionieren , und der ISP hat Recht, es zu überschreiben. Wenn Sie die Antworten auf Ihre ausgehenden Nachrichten umleiten möchten, verwenden Sie reply-to.

Eine Problemumgehung für gültige Adressen, die mit vielen ISPs funktioniert:

versuchen Sie, einen fünften Parameter zu Ihrem mail()-Befehl hinzuzufügen: 

mail($to,$subject,$message,$headers,"-f [email protected]");
54
Pekka 웃

Es stellt sich heraus, dass der Server des ursprünglichen Posters (blueHost) eine FAQ zu dieser Frage hat .

Artikel 206.


Dies liegt daran, dass unsere Server Sie (oder Ihr Skript) benötigen, um ein ordnungsgemäß formatiertes, gültiges Feld Von: im Header der E-Mail zu verwenden. Wenn das Feld Von: nicht korrekt formatiert, leer ist oder die E-Mail-Adresse nicht im cPanel vorhanden ist, wird die Adresse Von: in [email protected]###.bluehost.com geändert.

Sie müssen das von Ihnen verwendete Skript ändern, um einen gültigen From: header. korrekt zu verwenden.

Beispiele für Header, die funktionieren sollten, wären:

Von: [email protected]
Von: "Benutzer" <[email protected]äne.com>

Beispiele für Kopfzeilen, die NICHT funktionieren werden:

Von: "[email protected]"
Von: Benutzer @ Domäne.com
Von: [email protected] <[email protected]

Unsere Server akzeptieren nicht, dass der Name für die E-Mail-Adresse und die E-Mail-Adresse identisch sind. Eine doppelte Angabe der E-Mail-Adresse wird nicht akzeptiert.

Für Skripte wie Joomla und Wordpress müssen Sie deren Dokumentation befolgen, um die from-Felder korrekt zu formatieren. Wordpress erfordert das Mail From-Plugin.

Hinweis: Die von Ihnen verwendete E-Mail-Adresse muss ein gültiges erstelltes Konto in der .__ sein. cPanel.

20
John Connolly

Ich hatte das gleiche Problem, ich habe die php.net-Site überprüft. Und das richtige Format gefunden.
Dies ist mein aktualisierter Code. 

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From:  ' . $fromName . ' <' . $fromEmail .'>' . " \r\n" .
            'Reply-To: '.  $fromEmail . "\r\n" .
            'X-Mailer: PHP/' . phpversion();

Das\r\n sollte in doppelten Anführungszeichen (") selbst stehen, die einfachen Anführungszeichen (') funktionieren nicht. 

13
Eugine Joseph

Um das Phishing zu verhindern, verhindern einige Mail-Server, dass das From erneut geschrieben wird.

4
Luís Guilherme

Ich habe dieses Problem gelöst, indem ich E-Mail-Konten in Cpanel hinzufügte und diese E-Mail auch aus diesem Feld in den Header eingefügt habe 

$header = 'From: XXXXXXXX <[email protected]>' . "\r\n";
1
Anahit DEV

Ich weiß, dass dies ein alter Thread ist, aber ich hatte das gleiche Problem, seit ich gestern zu bluehost gezogen bin. Möglicherweise war es nicht die ausgewählte Antwort, aber ich unterstütze die Antwort des Bluehost-Artikels 206. 

Ich habe eine gültige E-Mail in der Systemsteuerung erstellt und als Absenderadresse verwendet.

1
Rvenca

Der Webhost spielt nicht wirklich schlecht. Es ist nicht streng nach den Regeln - aber verglichen mit einigen der erstaunlichen Erfindungen, die Spam verhindern sollen, ist es nicht besonders schlecht.

Wenn Sie wirklich E-Mails von "@ gmail.com" senden möchten, verwenden Sie einfach den gmail SMTP-Dienst. Wenn Sie den Server, auf dem PHP ausgeführt wird, nicht neu konfigurieren können, gibt es zahlreiche E-Mail-Wrapper-Tools, mit denen Sie einen benutzerdefinierten SMTP-Relay-Phpmailer angeben können.

C.

0
symcbean

header funktionierten nicht für mein Shared Hosting. Grund war, dass ich meine Hotmail-E-Mail-Adresse im Header verwendete. Ich habe eine E-Mail auf meinem Cpanel erstellt und diese E-Mail in die Kopfzeile eingefügt.

 $header = 'From: ShopFive <[email protected]>' . "\r\n";
0
zeeshan