Additional Headers mit mail()
Electronix
- php
1 Der Martin0 Electronix0 Tom
Hallo,
ich habe mit folgendem Code versucht, auf meinem Server eine Mail zu versenden:
$inhalt = "Benachichtigung ... bla, bla... a";
$header = "From: Ich <me@example.com>\r\n";
$header .= "Content-Type: text/plain; charset=UTF-8\r\n";
$header .= "Content-Transfer-Encoding: 8bit";
mail("test@example.com", "Betreff", $inhalt, $header);
Das klappt soweit auch, allerdings kommt dann folgendes an:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Message-Id: 20090622171627.4DC80AF002DC@example.com
Date: Mon, 22 Jun 2009 19:16:27 +0200 (CEST)
Benachichtigung ... bla, bla... ä
Also scheinbar wird der vierte Parameter ignoriert bzw. falsch angehängt und dann vom Mailprogramm nicht als Header erkannt.
Woran kann das liegen?
MfG,
Electronix
Hi,
$inhalt = "Benachichtigung ... bla, bla... a";
$header = "From: Ich me@example.com\r\n";
$header .= "Content-Type: text/plain; charset=UTF-8\r\n";
$header .= "Content-Transfer-Encoding: 8bit";
mail("test@example.com", "Betreff", $inhalt, $header);
ich rieche etwas. Es riecht nach ... falschen Zeilenumbrüchen. ;-)
> Das klappt soweit auch, allerdings kommt dann folgendes an:
>
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> Message-Id: <20090622171627.4DC80AF002DC@example.com>
> Date: Mon, 22 Jun 2009 19:16:27 +0200 (CEST)
>
> Benachichtigung ... bla, bla... ä
Dann lass mal die \r weg und lass nur \n als Zeilenumbruch. Ja, der korrekte Zeilenumbruch im Mail-Kontext ist \r\n, aber auf Unix-ähnlichen Systemen sitzt zwischen Applikation (PHP) und Server (SMTP) normalerweise noch ein Script oder Programm, das manchmal sowohl \r als auch \n in \r\n umwandelt. Folge: Deine erste Headerzeile (From:) wäre mit zwei Zeilenumbrüchen vom Rest abgetrennt - und zwei Zeilenumbrüche bedeuten das Ende der Header und den Beginn des Nutzinhalts.
So long,
Martin
--
Frauen sind wie Elektrizität: Fasst man sie an, kriegt man eine gewischt.
Hi,
Dann lass mal die \r weg und lass nur \n als Zeilenumbruch. Ja, der korrekte Zeilenumbruch im Mail-Kontext ist \r\n, aber auf Unix-ähnlichen Systemen sitzt zwischen Applikation (PHP) und Server (SMTP) normalerweise noch ein Script oder Programm, das manchmal sowohl \r als auch \n in \r\n umwandelt. Folge: Deine erste Headerzeile (From:) wäre mit zwei Zeilenumbrüchen vom Rest abgetrennt - und zwei Zeilenumbrüche bedeuten das Ende der Header und den Beginn des Nutzinhalts.
Erstaunlich, das klappt tatsächlich!
Vielen Dank!
MfG,
Electronix
Hello,
Erstaunlich, das klappt tatsächlich!
Vielen Dank!
Und wenn Du nun auch noch die Header vernünftig codierst, sodass sie nur 7-Bit-ASCII bekommen, dann wirst Du noch weniger Probleme haben.
http://de2.php.net/manual/en/function.mb-decode-mimeheader.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg