Ich habe auf meiner Website ein PHP-Skript, das automatisch eine Bestellbestätigung an meine Kunden schickt. Die Domain meiner Website ist bei einer Firma registriert, die auch meine Website hostet. Ich habe eine Menge Probleme, E-Mails mit der mail()-Funktion an einige E-Mail-Konten zu senden ... viele meiner Benutzer kontaktieren mich und sagen, dass sie meine automatische E-Mail nie erhalten haben! Das ist also ein sehr großes Problem!
Die Konten, die mir mehr Probleme bereiten, sind comcast.net, uol.com, mchsi.com und andere! Ich habe mich mit dem Support-Center dieser E-Mail-Anbieter in Verbindung gesetzt und darum gebeten, meine IP-Adresse ebenfalls aus der Blockierliste zu entfernen.
Die Kopfzeile der E-Mail sieht wie folgt aus:
$header = "Sender: $from_mail\n";
$header .= "From: Account <$from_mail>\n";
$header .= "Reply-To: Account <$from_mail >\n";
$header .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";
$body = "\n--$mixed_boundary\n";
.
.
.
.
$body .= "\n\n--$mixed_boundary--";
mail($to, $subject, $body, utf8_encode($header), "-f$from_mail");
Gibt es etwas, das ich versuchen kann, um dieses Problem zu vermeiden? Weiß jemand, wo ich nachsehen kann, welche IP-Adresse der Server hat, der für die Zustellung von E-Mails verwendet wird, wenn ich an die PHP-Funktion mail() denke?
Vielen Dank im Voraus für Ihre Antworten!!!
Hallo,
noch heute blockieren einige E-Mail-Provider wie Comcast meine IP-Adressen mit der Begründung, dass mein Mailserver Spams versendet ... Ich habe die Entfernung von der Blockliste beantragt, aber ihr System blockiert sie weiterhin! Ich weiß nicht, was ich noch tun kann ... Ich habe Ihre Vorschläge befolgt und der Code sieht wie folgt aus:
$md5 = md5(date('r', time()));
$mixed_boundary = "PHP-Mixed-$md5";
$alt_boundary = "PHP-Alt-$md5";
$header = "Sender: $from_mail\r\n";
$header .= "Errors-To: $from_mail\r\n";
$header .= "From: account <$from_mail>\r\n";
$header .= "Reply-To: $from_mail\r\n";
$header .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\r\n";
$header .= "Mime-Version: 1.0\r\n";
$header .= "X-Mailer: PHP/".phpversion()."\r\n";
$body = "\n--$mixed_boundary\n";
$body .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n";
.
.
.
.
$body .= "--$mixed_boundary\n";
$body .= "Content-Disposition: attachment filename=\"...\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\"...\"\n";
$body .= "Content-Transfer-Encoding: base64\n";
.
.
.
.
$body .= "\n\n--$mixed_boundary--";
mail($to, $subject, $body, utf8_encode($header), "-f$from_mail");
Vorschläge?
Nochmals vielen Dank!
0 Stimmen
Ein Blick in die PHP-Dokumentation für die mail()-Funktion zeigt, dass die Kopfzeilen mit " \r\n ", nicht nur mit " \n " wie in Ihrem Beispiel. Könnte sein, dass " \r\n "von der Spezifikation verlangt wird, aber dass Ihr Ansatz trotzdem funktioniert, da einige Mailserver liberal sind, was die Akzeptanz angeht.
0 Stimmen
In der PHP-Dokumentation heißt es, dass nur " \n "nicht mit RFC 2822 (Internet Message Format) übereinstimmt
0 Stimmen
Sondern " \r\n Sind die "Trennzeichen" für Asp Server? Oder nicht? Ich dachte, der PHP-Server verwendet " \n " als neue Zeile char!
0 Stimmen
Das hat nichts mit PHP zu tun. Eigentlich sollten Sie " \x0d\x0a ", da es sich nicht um Zeilenumbrüche handelt, sondern um die in der Spezifikation angegebenen Zeichen. Siehe die Beispiele in der Dokumentation: us2.php.net/handbuch/de/funktion.mail.php
0 Stimmen
Danke! Ich muss also die Worte " \n " mit " \x0d\x0a " oder mit " \r\n "?
0 Stimmen
Ich denke " \r\n " ist in Ordnung, da es in der Dokumentation so gemacht wird, aber " \x0d\x0a " wird genauso gut funktionieren. Ich bin mir nicht sicher, wie PHP "" interpretiert. \n " auf Windows-Rechnern. Wenn Sie Ihre Website auf einem Windows-Rechner betreiben, empfehle ich " \x0d\x0a ", nur um sicher zu gehen.
0 Stimmen
Nochmals vielen Dank, Inshalla! Meine Website läuft auf einer Linux-Maschine, also werde ich " \n " mit " \r\n "! Ich hoffe, dass damit das Problem wenigstens ein bisschen gelöst ist!