Email Versand (HTML) geht nicht mehr
hawkmaster
- php
0 Der Martin0 Der Martin0 Tom0 hawkmaster0 Tom
Hallo zusammen,
mit unten stehender Funktion hatte ich bisher problemlos Mails von meinem 1und1 Webspace versenden können.
function html_mail($sendto,$subject,$text)
{
$date = date("D, d M Y H:i:s O");
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header.= "Date: $date\n";
$header.= "From: Der Name <andreas@example.com>\n";
$msg_body.="<br>\n";
$msg_body.="Zusammenfassung\n";
$msg_body.="<br><br>\n";
$msg_body.= "$text\n";
//$msg_body.= "Nur ein Test\n";
$msg_body.="<br><br>\n";
mail($sendto, stripslashes($subject), $msg_body, $header) or print "Konnte die HTML-Mail nicht versenden";
}
Das Problem scheint an $msg_body zu liegen sobald ich $text übergebe. In $text steht eine HTML Tabelle <table>... </table>.
Kommentiere ich diese Zeile aus und mache dafür "$msg_body.= "Nur ein Test\n";"
dann wird die Mail versendet.
Leider konnte mir auch der Support von 1und1 nicht helfen
Hat jemand eine Idee was es sein könnte?
vielen Dank und viele Grüße
hawk
Hallo,
$msg_body.="<br>\n";
$msg_body.="Zusammenfassung\n";
$msg_body.="<br><br>\n";
$msg_body.= "$text\n";
//$msg_body.= "Nur ein Test\n";
$msg_body.="<br><br>\n";mail($sendto, stripslashes($subject), $msg_body, $header) or print "Konnte die HTML-Mail nicht versenden";
Das Problem scheint an $msg_body zu liegen sobald ich $text übergebe. In $text steht eine HTML Tabelle <table>... </table>.
Kommentiere ich diese Zeile aus und mache dafür "$msg_body.= "Nur ein Test\n";"
dann wird die Mail versendet.
wie umfangreich ist denn die HTML-Tabelle, die du einfügst? Und hat der HTML-Quelltext Zeilenumbrüche? - Eine einzelne Zeile innerhalb des Mail-Body darf AFAIK maximal knapp 1000 Zeichen lang sein.
Leider konnte mir auch der Support von 1und1 nicht helfen
Nun, mein Hinweis ist zunächst auch nur ein Schuss ins Blaue ...
So long,
Martin
Hallo Martin,
danke für deine Hilfe.
Also die HTML Tabelle kann schon recht groß werden. (z.b. 71kb)
und ja sie hat in jeder Zeile "LF" bzw. "CRLF" stehen.
Mich wundert halt warum es noch vor kurzem ging und jetzt nicht mehr.
Habe weder am Script noch an den Daten was geändert.
vielen Dank und viele Grüße
hawk
Hi,
mir fällt da gerade noch was auf:
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$header.= "Date: $date\n";
$header.= "From: Der Name andreas@example.com\n";
Die ersten beiden Header schließt du mit \r\n ab, die anderen beiden nur mit \n. War das schon immer so?
Die Spezifikationen von SMTP verlangen \r\n als Trennzeichen, das auf Unix-artigen Systemen übliche sendmail-Script wandelt, wie hier im Forum schon mehrmals berichtet wurde, \n automatisch in \r\n um. Aber was tut es mit \r\n? Werden die zu \r\r\n erweitert?
Zumindest sorgst du für Verwirrung, wenn du beide Notationen gemischt verwendest.
Ciao,
Martin
Hello,
Die Spezifikationen von SMTP verlangen \r\n als Trennzeichen, das auf Unix-artigen Systemen übliche sendmail-Script wandelt, wie hier im Forum schon mehrmals berichtet wurde, \n automatisch in \r\n um. Aber was tut es mit \r\n? Werden die zu \r\r\n erweitert?
Es werden sowohl "\r" als auch "\n" zu vollständigen "\r\n" verwandelt.
Das Problem scheint mir eher darin zu liegen, dass der HTML-Teil im Parameter für den Plain-Text übergeben wird, anstatt ihn unten an den Header (nach einem "\n\n") als Body anzuschließen.
$message einfach leer lassen, und alles über $header regeln.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
danke auch dir.
Das Problem scheint mir eher darin zu liegen, dass der HTML-Teil im Parameter für den Plain-Text übergeben wird, anstatt ihn unten an den Header (nach einem "\n\n") als Body anzuschließen.
ja das glaube ich auch so langsam.
Ich habe es jetzt mal so geändet, dass ich den ganzen HTML Inhalt als Anhang versende. Dann klappt es.
Ich wollte es ursprünglich in der Mail haben.
Aber warum es jetzt nicht mehr geht weiss ich nicht.
vielen Dank und viele Grüße
hawk
Hello,
Das Problem scheint mir eher darin zu liegen, dass der HTML-Teil im Parameter für den Plain-Text übergeben wird, anstatt ihn unten an den Header (nach einem "\n\n") als Body anzuschließen.
ja das glaube ich auch so langsam.
Ich habe es jetzt mal so geändet, dass ich den ganzen HTML Inhalt als Anhang versende. Dann klappt es.
Ich wollte es ursprünglich in der Mail haben.
Aber warum es jetzt nicht mehr geht weiss ich nicht.
Es ist ja "in der Mail".
Dass es nun nicht mehr klappt, und früher mal funktioniert hat, liegt eventuell am Zeichensatz.
Ist der Server umgestellt worden von ISO-8859-1 auf UTF-8?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg