Hello,
Hallo!
Ich möchte gerne eine pdf-Datei per mail versenden.
Habe das folgende Script.
Wenn ich nur die Datei versende funktioniert es einwandfrei. Sobald ich aber eine Mehrteilige nachricht versende funktioniert es nicht mehr.
Kann mir bitte jemand sagen wo der Fehler in meinem Code ist.
mfg Michael
$boundary = strtoupper(md5(uniqid(time())));
$mail_header = "From:HOFERNET <$from>\n";
$mail_header .= "MIME-Version: 1.0";
$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
$mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
$mail_header .= "\n--$boundary"; ### Leerzeile?
$file_content = fread(fopen($file,"r"),filesize($file));
$file_content = chunk_split(base64_encode($file_content));
$mail_header .= "\nContent-Type: application/pdf; name="$file_name"";
$mail_header .= "\nContent-Transfer-Encoding: base64";
$mail_header .= "\nContent-Disposition: attachment; filename="$file_name"";
$mail_header .= "\n\n$file_content";
$mail_header .= "\n--$boundary";$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\n$message";
$mail_header .= "\n--$boundary";mail($to,$betreff,$message,$mail_header);
sieht eigentlich auf den erste Blick fast gut aus, außer
- die Zeilenende für Header sind nach Vorschrift CRLF und nicht nur LF
- bei Chunksplit nun wieder habe ich schon mehrfach ffestsgestellt, dass da nur LF
als Trenner durchgegangen ist. Irgendwo stand das auch...
Leider ist da bei PHP die Vorgabe gerade anders herum. - Wenn ich mir z.B. von Outlook Express erzeugte Mails anschaue, dann haben die hinter
einer Boundary auch immer eine Leerzeile...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)