n'Abend!
Ich möchte gerne eine pdf-Datei per mail versenden.
Also als Mail-Anhang?
$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";
Wieso wechselst du hier auf einmal die Position der Zeilenumbrüche? Erst notierst du sie am Ende des Strings, dann plötzlich am Anfang des nächsten. Das ist zwar von der sache her egal, aber es ist übersichtlicher, wenn du bei einer Schreibweise bleibst. Ich selbst würde empfehlen, den Zeilenumbruch auch am Ende einer Anweisung zu notieren, das wirkt übersichtlicher.
Nicht egal ist allerdings, dass du die Zeilenumbrüche nur mit \n angibst. Laut einschlägigen RFCs müssen Mail-Headerzeilen aber mit \r\n getrennt werden.
$mail_header .= "\n\nThis is a multi-part message in MIME format -- Dies ist eine mehrteilige Nachricht im MIME-Format";
$mail_header .= "\n--$boundary";
Und es ist unsauber, das alles noch dem Mail-Header zuzuordnen. Alles ab "This is a multi-part ..." ist genaugenommen schon der Message Body.
Das macht de facto keinen Unterschied, weil mail() sowieso den Header und den Message-Text durch zwei Zeilenumbrüche getrennt aneinanderhängt.
$file_content = fread(fopen($file,"r"),filesize($file));
Das ist auch so'n Schönheitsfehler: Die Datei wird nicht geschlossen (okay, das wird am Ende des Scripts automatisch erledigt, ist aber nicht wirklich sauber).
$mail_header .= "\nContent-Type: text/plain";
$mail_header .= "\nContent-Transfer-Encoding: 8bit";
$mail_header .= "\n\n$message";
$mail_header .= "\n--$boundary";
Was steht in deinem Fall in $message? Nicht dass das wichtig wäre, aber du hast diese Variable nirgends definiert - jedenfalls nicht in dem Stück Code, das du hier zeigst.
mail($to,$betreff,$message,$mail_header);
Und hier verschickst du $message zweimal - einmal bereits in $mail_header eingebettet, und dann nochmal separat. Das zweite Vorkommen dürfte der empfangende Mailclient allerdings ignorieren, weil es nach dem abschließenden Boundary kommt und daher nicht mehr erwartet wird.
Tja ... abgesehen von \n anstatt \r\n kann ich keinen wirklichen Fehler entdecken, nur eine unsaubere Implementierung ...
So long,
Martin
F: Was ist schneller: Das Licht oder der Schall?
A: Offensichtlich der Schall. Wenn man den Fernseher einschaltet, kommt immer erst der Ton, und dann erst das Bild.