Hello,
lang ist's her, dass ich selber was dazu verfasst habe und es hat damals zuverlässig funktioniert. Leider ist mein Mail-Modul verschollen. In meinen 1000 Postings hier zum Thema habe ich die Gedanken auch noch nicht alle wiederfinden können.
Jedenfalls habe ich mich jetzt im Dschungel von Zeichencodierung, Transfer-Encoding, Header-Zeilen, was macht der Mailclient "einfach so?" usw. verlaufen.
Stand der Tests ist:
<?php mailtest.php ### Versand von Mail mit Attachment ### utf-8 ### ÄÖÜäöü
$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';
$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";
$sent = mail($mailto, $subject, $message, $header);
echo "\r\n<pre>\r\n";
echo ($sent)?date('Y-m-d H:i:s') . ": Mail wurde versandt\r\n":"Mail wurde nicht versandt\r\n";
echo "</pre>\r\n";
?>
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.
Alles, was der User sehen muss, zeigt der Thunderbird auch richtig an.
Wenn ich mir den Quelltext aber nun anzeigen lassen mit "Thunderbird/Quelltext anzeigen", dann bekomme ich schon wieder Bauchschmerzen:
Received: by h2222671.stratoserver.net (Postfix, from userid 33)
id C4D8B6CA097; Tue, 4 Mar 2014 14:10:03 +0100 (CET)
To: tschmieder@online.de
Subject: Mail-Test (8) ASCII mit ÄÖÜäöü and boundary
X-PHP-Originating-Script: 0:mailtest.php
from: info@bikers-lodge.com
Content-Type: multipart/mixed;
boundary="----=_TSMail-Next-Part-1393938603"
Message-Id: 20140304131003.C4D8B6CA097@h2222671.stratoserver.net
Date: Tue, 4 Mar 2014 14:10:03 +0100 (CET)
Envelope-To: tschmieder@online.de
X-UI-Filterresults: notjunk:1;V01:K0:6ZHqduRylEA=:kdADYP2ysE4jZDDDsngeb5qM19
higEP6GOVerbd3h59qnGdV5T75uNyUQvTAx5E866TZXIRtUg5ESlP7OUA5VDrQe+O0Kf5Y7DV
mPU66X7FAN26W787qvhhsVmiGiln8zcnOaHY6i/tualP3aVxOkPinUDWOGY5DvjDduPMRYZkX
aGgtFziOmbU044aL31xsjJxY8VSCH2tQOaLpRVqwla5g4pbCRhzkAtYOMjOdrTxDuoBgoDmYs
Zz8hoAOIwoZFino4BuUuVekmtd1ZuI5Ch16hCRbuGYJESK5oSwhazIfzswjjJe75sPgDknz9x
6QiAH5q9V8lDY8n/ygddW9be5kdK4nsq0x/AzB36S3B/1ZGVKnsOs5vcddTOlVUp6OfLsv3OV
PZyjTnAzClasZagcVsREKfm6OR59G3cyWzcZ4BT1UGI9mInoebVDJEdBpJ6pZuBzddEEZlDwP
wzBBpfmyQl8NPt4nXgWNBGtJaR7H5Bi3ix/cS4VflC9XdtBrzswray21ahQiunMQyNwpiN1AC
Il16YMmc6sbiHYJa5EfUWZ82+DpUhBP/2mQV5mi+T8v/W+oKh6Vsx+Vt4lVYWjGL2L1GRk3FW
IR/mWaHsduJhTpa0n0/4elb9z4e4XoZRA5TxNLjFD5W7FGB+zkSLarAgi14JKpf3Vh//ydCHp
CoS1PGyg6V0TCLdbdel6Ec16P8TKTjMwAoLdf1alXtyI5S1lWAXumDmTHudSHNWfgzdi0eeeP
Bdm15PgitVaYLeLnBel6+yvaE/aLmcX3nk5aJgHpitf4/T5tTYkwBOtBDUy5iEUA3BB8o68+d
DTNGEGXua1Li8ojJ3QyKuCYGMk8XzMBrPHiaOkwCQW0lJ9kdjT8a4PCOF0AQxYxcsu4tDmHgf
d64k9HJhgZPK/oN9ZLWiqw07ZUZ5gFdnykx4CM+VsxYwGeVsiZgExyo+fhHRvUdwijATBMRK3
AoxDKsrdzxWk7qkNZwEBtNDd4j+mY4ysCMxkNBqDxP3oFMyx2pkwRL24ZFxCvomKU6tmtM7VS
0YN81MHO0fp/KHRc65zDTAA/Iplbu2YjX/DyXUoh8chJtrfu1wo4X1UlPnUC/OBZOS/Ofj3mk
M4Z0Y3bTmR6EBzYpOXp96abcknYuMjQn+OHosRxdivlqZrwzejeHCZ6IAo5YiEk0lcf5rnyVz
BK+S8jTXi6KIW2ltXjGDXofhOuJ2x1dv/B5gCBrUD6MGFRV5aW78hST1vyvHyN61ETUdlumpm
gELn96zooaruMBGPHn7yl1ajFDP/YzUFCzQ9/Dw5LtxEdhj4c2DHZ7e0=
Old-X-EsetId: 8DD79423D8FC0F37DC92C5
Old-X-EsetId: 8DD79423D8FC0F37DC92C5
Old-X-EsetId: 8DD79423D8FC0F37DC92C5
X-EsetId: 8DD79423D8FC0F37DC92C5
Hier kommt der öffentliche Text mit dämlichen Übelkeiten und Ödemen
------=_TSMail-Next-Part-1393938603
Content-Type: text/plain;
charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Das ist die Ansicht in iso-8859-1-Codierung. Die wäre aber für Mails eigentlich naheliegender, als utf-8, da mMn mailheader immer noch ausschließlich ASCII enthalten dürfen... Oder?
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.
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...
Wer bringt mich mal wieder auf die Spur?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg