Der Martin: Emailversand

Beitrag lesen

Hallo,

Ich habe ein Script, welches mir ein PDF auf Basis mehrerer Formulare erzeugt. Die funktioniert einwandfrei. Nun soll diese PDF Datei per Email versendet werden. Funktioniert auch soweit. Nur kann ich den Anhang, also die pdf Datei, nicht öffnen. Es läge ein decodierungsfehler vor.

stimmt denn die Dateigröße des Anhangs, die der Mailclient angibt?

$dateiinhalt = chunk_split(base64_encode(fread(fopen($dateiname, "r"), filesize($dateiname))));

Hier sehe ich eine Falle: fread() liest nicht unbedingt so viel wie angegeben. Das Manual gibt an, dass maximal 8192 Bytes in einem Rutsch gelesen werden. Deine PDF-Datei wird hier also bei 8kB abgeschnitten.
Verwende stattdessen file_get_contents(), wenn du sicher bist, dass die PDF-Dateien nicht zu groß sind (andernfalls ist der Versand als Mailanhang eh nicht empfehlenswert).

$kopf .= "\n--$id";
// Content-Type: image/gif, image/jpeg, image/png » MIME-Typen - selfHtml.org
$kopf .= "\nContent-Type: application/pdf ; name=$dateiname_mail\n";
$kopf .= "Content-Transfer-Encoding: base64\n";
$kopf .= "Content-Disposition: attachment; filename=$dateiname_mail\n";
$kopf .="\n\n".$dateiinhalt;

Nach dem Content-Type-Header kommen bei dir insgesamt drei Zeilenumbrüche, zwei sollten es sein. Ich glaube zwar nicht, dass das ein Problem ist, aber sicher ist sicher ...

Ciao,
 Martin

--
Die letzten Worte der Challenger-Crew:
Lasst doch mal die Frau ans Steuer!