E-Mail mit Attachment
Tom
- php
0 Julian Hofmann0 Tom0 Stefan Bach
Hallo,
ich komme nicht weiter, habe aber schon alles mögliche ausprobiert. Also: ich möchte mit mail() eine E-Mail mit Attachment versenden. Das klappt auch, nur erscheint die E-Mail im Quelltext (und es liegt nicht am E-Mail-Programm). Irgendwas hab ich wohl übersehen! Kann mir jemand helfen?
Der Quelltext sieht so aus:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=3b463eede5edaf41ccfb4da8a996b843
This is a multi-part message in MIME format.
--3b463eede5edaf41ccfb4da8a996b843
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
Das ist der Text, bla bla bla...
--3b463eede5edaf41ccfb4da8a996b843
Content-Type: image/jpeg; name="0,1020,160538,00.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bild.jpg"
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk
[usw.]
90ynwLqLflI3suvqGkKuVfmcP0IziEfp/9n/////AA==
--3b463eede5edaf41ccfb4da8a996b843
Schon mal danke, Tom
Hallo Tom.
Hab mich mal etwas umgelesen weil mich das Problem interessiert hat. Bin dabei in der Doku auf zwei Dinge gestoßen:
a. Ein Klasse für solche Mails: http://www.nirvani.net/software/lib_multipart_mime_email/
b. Diesen Hinweis:
"When adding attachments to the message body on a Windows system, always open the file using the binary flag option i.e. fopen("filename","rb")."
Vielleicht hilft die das ein oder andere.
Grüße aus Würzburg
Julian
Hello Tom,
ich komme nicht weiter, habe aber schon alles mögliche ausprobiert. Also: ich möchte mit mail() eine E-Mail mit Attachment versenden. Das klappt auch, nur erscheint die E-Mail im Quelltext (und es liegt nicht am E-Mail-Programm). Irgendwas hab ich wohl übersehen! Kann mir jemand helfen?
Der Quelltext sieht so aus:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3b463eede5edaf41ccfb4da8a996b843"
...
--3b463eede5edaf41ccfb4da8a996b843--
Kann sein, dass bloß die beiden Abschlussstriche für die Abschnittsende-Grenze gefehlt haben.
Grüße
Tom
Hello Tom,
noch was:
Die base64 codierte Sequenz darf nur mit \n und nicht mit \r\n wrapped werden. Das nehmen die Mailserver sonst übel und hängen sich auf oder senden Dir die Mail als Text-Attachement.
Grüße
Tom
Hallo,
es tut immer noch nicht. Das codieren mache ich mit $datei_content = chunk_split(base64_encode($datei_content));
Tom
Hello,
es tut immer noch nicht. Das codieren mache ich mit $datei_content = chunk_split(base64_encode($datei_content));
Genau. Dann schau mal, was chunk_split() für den Splitter für einen Default hat. Der ist \r\n und das ist hier falsch. Du musst \n angeben.
Grüße
Tom
Hallo,
Genau. Dann schau mal, was chunk_split() für den Splitter für einen Default hat. Der ist \r\n und das ist hier falsch. Du musst \n angeben.
So geht's auch nicht:
$datei_content = chunk_split(base64_encode($datei_content),76,"\n");
Tom
Hello,
So geht's auch nicht:
$datei_content = chunk_split(base64_encode($datei_content),76,"\n");
mmh, hatte auch eher daran gedacht, dass das beschriebene Verhalten von den vergessenen zwei Bindestrichen an der Abschlußboundary herrührte.
Hattest Du dir noch drangesetzt?
Grüße
Tom
Hallo,
es war eine Leerzeile, siehe Posting von Stefan.
Trotzdem Danke! Manchmal sind es eben die kleinen Dinge! ;-)
Tom
Hello,
es war eine Leerzeile, siehe Posting von Stefan.
Wo fehlte die denn?
Ich habe doch mindestes dreizehn Mal hingeguckt *tztz*
Grüße
Tom
Hallo,
ich möchte mit mail() eine E-Mail mit Attachment versenden. Das klappt auch, nur erscheint die E-Mail im Quelltext
Der Quelltext sieht so aus:
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=3b463eede5edaf41ccfb4da8a996b843This is a multi-part message in MIME format.
[...]
Was du hier als Quelltext angibst, das wird wahrscheinlich der Body der Mail sein. Damit dein Mailprogramm weiß, dass es sich hier um eine Mail mit Attachments handelt musst du die MIME-Version und die Content-type Zeilen in den Header schreiben, wo sie auch hingehören.
Eine Mail ist nämlich so aufgebaut, dass alles bis zur ersten Leerzeile als Header gilt und danach der Körper der Mail anfängt. Was dieser Körper genau sein soll wird dabei durch den "Content-type: " Headereintrag gesteuert.
Viele Grüße,
Stefan
Hallo,
Eine Mail ist nämlich so aufgebaut, dass alles bis zur ersten Leerzeile als Header gilt und danach der Körper der Mail anfängt. Was dieser Körper genau sein soll wird dabei durch den "Content-type: " Headereintrag gesteuert.
Das wars! Danke!
Tom