Tom: E-Mail mit Attachment

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

  1. 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

    --
    ss:) zu:{ ls:< fo:) de:< va:} ch:° n4:} rl:° br:> js:| ie:{ fl:( mo:)
  2. 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"

    boundaries sollte eigentlich in Häkchen stehen

    ...

    --3b463eede5edaf41ccfb4da8a996b843--

    Kann sein, dass bloß die beiden Abschlussstriche für die Abschnittsende-Grenze gefehlt haben.

    Grüße

    Tom

    1. 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

      1. Hallo,

        es tut immer noch nicht. Das codieren mache ich mit $datei_content = chunk_split(base64_encode($datei_content));

        Tom

        1. 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

          1. 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

            1. 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

              1. Hallo,

                es war eine Leerzeile, siehe Posting von Stefan.

                Trotzdem Danke! Manchmal sind es eben die kleinen Dinge! ;-)

                Tom

                1. Hello,

                  es war eine Leerzeile, siehe Posting von Stefan.

                  Wo fehlte die denn?
                  Ich habe doch mindestes dreizehn Mal hingeguckt *tztz*

                  Grüße

                  Tom

  3. 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=3b463eede5edaf41ccfb4da8a996b843

    This 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

    --
    Lass dir das Tanzen NICHT verbieten
    http://tanzverbot.de
    1. 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