Der Martin: eMail senden mit mail(), Codierungsprobleme

Beitrag lesen

Hi,

$filename = FILE;

$content  = chunk_split(base64_encode(file_get_contents($filename)), 76, PHP_EOL);
#$content = base64_encode(file_get_contents($filename), 76, PHP_EOL);

$mailto = 'tschmieder@online.de';
$subject = 'Mail-Test (8) ASCII mit ÄÖÜäöü and boundary';
$message = 'Hier kommt der öffentliche Text mit dämlichen Übelkeiten und Ödemen';

  
Das geht schon mal in die Hose. Sobald in Headerzeilen non-ASCII-Zeichen auftauchen, muss der Wert entsprechend codiert werden. [Chris](https://forum.selfhtml.org/?t=216717&m=1486719) hat dir schon gezeigt, wie.  
  

> ~~~php

$header	= "from: info@bikers-lodge.com\n";  

> $time       = time();  
> $boundary   = "----=_TSMail-Next-Part-$time";  
>   
> $header    .= "Content-Type: multipart/mixed;\n";  
> $header    .= "  boundary=\"$boundary\"\n";  
>   
> $message   .= "\n\n--$boundary\n";  
> $message   .= "Content-Type: text/plain;\n";  
> $message   .= "  charset=iso-8859-1\n";  
> $message   .= "Content-Transfer-Encoding: 8bit\n\n";  
> $message   .= "Test-Mail mit Anhang, bitte den Quelltext der Mail kopieren und nachher mitbringen\n\n";  
>   
> $message   .= "\n--$boundary\n";  
> $message   .= "Content-Type: text/plain;\n";  
> $message   .= "  name=\"attachment.txt\"\n";  
> $message   .= "Content-Transfer-Encoding: base64\n";  
> $message   .= "Content-Disposition: attachment;\n";  
> $message   .= '  filename="' . basename($filename) . "\"\n\n";  
> $message   .= $content . PHP_EOL;  
> $message   .= "\n--$boundary--\n";

Und ich bin mir immer wieder unsicher, ob man einfach ungestraft Linefeeds verwenden darf, anstatt der geforderten CR/LF-Kombination.

Das funktioniert auch soweit, wenn der Client ein Thunderbird ist. Andere konnte ich leider nicht testen im Moment.
Wenn ich den vermeintlichen Quelltext der empfangenen Mail dann speichere und ihn anschließend mit notepad++ in der Codierung "utf-8 ohne BOM" anschaue, wird auch alles richtig angezeigt.

Das ist "good will", würde ich sagen. Mit den Non-ASCII-Zeichen im Header sollte man mit allem rechnen.

Wenn ich mir den Quelltext aber nun anzeigen lassen mit "Thunderbird/Quelltext anzeigen", dann bekomme ich schon wieder Bauchschmerzen:

Warum? Weil die Non-ASCII-Zeichen nicht korrekt angezeigt werden? Die Codierung der Mail-Header ist nun mal ASCII. Ob 8bit-Codes da inzwischen erlaubt sind oder nur von den meisten MTAs stillschweigend geduldet werden, weiß ich nicht genau. Aber eine Interpretation der Byte-Sequenzen nach UTF-8? Warum? Woher?

Und woher hat der Mail-Server "Content-Transfer-Encoding: quoted-printable". Hab ich nirgends so angegeben. Ganz im Gegenteil, ich schrieb

Content-Transfer-Encoding: 8bit\n\n";

Das hatte ich mir aus einer alten Testmail von OE so rausgepult.

Das hat dann wahrscheinlich dein lokaler MTA schon umgestellt.

Ich habe einfach im Moment den Überblick (und das Gedächtnis dafür) verloren, wer an welcher Stelle was verkurbelt, was ich nicht sofort sehe. Da ich keinen näheren Zugriff auf die Mailserver habe (weder Sender, noch Empfänger), kann ich leider auch nicht generisch (mit HEX-Editor) ind die gehandetlen Files reinschauen...

Nur ganz am Anfang bzw. ganz am Ende der Übertragungskette.

Ciao,
 Martin

--
Wenn man keine Ahnung hat - einfach mal Fresse halten.
  (Dieter Nuhr, deutscher Kabarettist)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(