Der Martin: Anatomie einer email-Message

Beitrag lesen

Hallo,

if($unhappy=true)

das ist bestimmt nicht, was du gemeint hast. Siehe Kommentar von dedlfix.

$file = $send_pdf;
          $file_name = $send_pdf;

Warum führst du hier zwei Variablen ein und weist ihnen dasselbe zu?

$from = "from@test.de";

Nein, bitte missbrauche nicht schon wieder die Domain der Stiftung Warentest. Nutze für allgemeine Beispiele die Dummy-Domains example.com, example.net, example.org, die dafür gedacht sind.

$mail_header  = "From: <$from>\n";

Alle Headerzeilen müssen mit CR+LF abgeschlossen werden, nicht LF allein. Einige Mailserver akzeptieren das zwar, aber darauf kannst du nicht bauen.

Davon abgesehen: Warum wirst du im weiteren Verlauf inkonsequent und notierst den Zeilenumbruch mal vor, mal nach dem Zeileninhalt? Entscheide dich doch bitte für *eine* Variante (vorzugsweise am Zeilenende), dann wird's auch leichter lesbar.

$mail_header .= "\n\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";

Und ab hier wird's wüst: Mit dem zweifachen Zeilenumbruch beendest du die Header. Was danach kommt, ist alles der Body, der *Inhalt* der Message. Das sollte man bitte nicht mit dem Header vermischen; das führt zur Verwirrung.

$file_content = fread(fopen($path.$file,"r"),filesize($path.$file));

Ups. Die harmlose Frage ist: Wo schließt du die geöffnete Datei wieder? Aber viel interessanter erscheint mir die Frage, woher du die Gewissheit nimmst, dass deine ganze Datei mit einem einzigen Aufruf von fread() gelesen werden kann. Das PHP-Manual sagt dazu, dass fread() maximal 8192 Byte pro Aufruf zurückgibt. Vielleicht ist dieser Wert auch implementationsabhängig kleiner - das könnte erklären, warum deine Attachments immer nur noch 1k groß sind: Du schneidest sie einfach ab.

$success = mail($to,$subject,$message,$mail_header);

Und hier nochmal, was ich am Anfang schon erwähnte: Du übergibst den gesamten Mail-Inhalt über den Parameter "additional headers". Das mag funktionieren; aber ganz gewiss ist es so nicht vorgesehen.

So long,
 Martin

--
Das Gehirn ist schon eine tolle Sache: Es fängt ganz von allein an zu arbeiten, wenn man morgens aufsteht, und hört erst damit auf, wenn man in der Schule ankommt.
  (alte Schülererkenntnis)