Hallo,
ich habe ein paar PHP-Scripte für einen Bestellvorgang erstellt. Am Ende sollen die gesammelten Informationen in Form einer E-Mail versendet werden (Plaintext + PDF-Anhang).
Da ich mich damit nicht wirklich auskenne, habe ich mir ein paar Beispielscripte zusammengesucht. Alle gefundenen Scripte schreiben die PDF in den Kopfbereich (4. Parameter von mail()). Allerdings haben diese immer dafür gesorgt, dass sich PHP bei mail() aufhängt (60 Sekunden werden überschritten), die PDF wird aber seltsamer Weise trotzdem versendet. Nun habe ich einfach mal probiert, was passiert, wenn ich die PDF in den Nachrichtenteil (Parameter 3 bei mail()) packe. Tatsächlich funktioniert es so ohne Probleme.
Die getesteten Mail-Programme (Pegasus Mail, Outlook Express, GMX-Webinterface), kamen damit zurecht. Entspricht das aber auch den Standards, oder handelt es sich hierbei nur um eine Fehlertoleranz bei den getesteten Programmen?
Hier der Code meiner Funktion:
function verschickePdfMail($empfaenger, $betreff, $text, $pdfPfad, $pdf_dateinameMail){
$id = md5(uniqid(time()));
$dateiinhalt = file_get_contents($pdfPfad);
// Absender Name und E-Mail Adresse
//$kopf = "From: Manfred Mustermann <meine@mailadresse.xy>\n";
$kopf = "";
$body = "";
$kopf .= "MIME-Version: 1.0\n";
$kopf .= "Content-Type: multipart/mixed; boundary=$id\n\n";
$kopf .= "This is a multi-part message in MIME format\n";
$body .= "--$id\n";
$body .= "Content-Type: text/plain; charset=ISO-8859-15\n";
$body .= "Content-Transfer-Encoding: 8bit\n\n";
$body .= $text; // Inhalt der E-Mail (Body)
// Content-Type: image/gif, image/jpeg, image/png » MIME-Typen - selfHtml.org
$body .= "\n--$id";
$body .= "\nContent-Type: application/pdf; name=$pdf_dateinameMail\n";
$body .= "Content-Transfer-Encoding: base64\n";
$body .= "Content-Disposition: attachment; filename=$pdf_dateinameMail\n\n";
$body .= chunk_split(base64_encode($dateiinhalt));
$body .= "\n--$id--";
return mail($empfaenger, $betreff, $body, $kopf); // E-Mail versenden
}
mfg. Daniel