[PHP] Meerdere attachments met mail()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zie jullie al denken: deze heeft weer niet goed gezocht. Maar ik heb wel goed gezocht, op google en tweakers, en ik kan echt niet vinden waarom mijn code niet klopt. De code die ik gebruik voor het versturen van de attachments is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
        $hand = fopen ('data/hand.jpg', 'r');
        $hand = fread ($hand, filesize ('data/hand.jpg'));
        $hand = chunk_split (base64_encode ($hand));

        $fp = fopen('data/registratie.html', 'r');
        $file_content = fread($fp, filesize('index.php'));
        $file_content = chunk_split(base64_encode($file_content));
        $header .= "From: Bibite <email@email.nl>\n";
        $header .= "To: $recipient\n";
        $header .= "Subject: $subject\n";
        $header .= "MIME-Version: 1.0\n";
        $header .= "Content-Type: multipart/mixed;\n";
        $header .= "\tboundary=\"XX-1234DED00099A\"\n";
        $header .= "Content-Transfer-Encoding: 8bit\n\n";
        $header .= "This is a multi-part message in MIME format.\n\n";
        $header .= "--XX-1234DED00099A\n";

        $header .= "Content-Type: text/html; charset=us-ascii\n";
        $header .= "Content-Transfer-Encoding: 8bit\n\n";
        $header .= "$message\n";
        $header .= "--XX-1234DED00099A\n";

        $header .= "Content-Type: application/octet-stream; name=\"test.html\"\n";
        $header .= "Content-Transfer-Encoding: base64\n";
        $header .= "Content-Disposition: attachment; filename=\"test.html\"\n\n";
        $header .= $file_content . "\n\n";
        $header .= "--XX-1234DED00099A--\n";

        $header .= "Content-Type: image/jpg; name=\"hand.jpg\"\n";
        $header .= "Content-Transfer-Encoding: base64\n";
        $header .= "Content-Disposition: attachment; filename=\"hand.jpg\"\n\n";
        $header .= $hand . "\n\n";
        $header .= "--XX-1234DED00099A--\n";


Vervolgens komt een mailtje dat er zo uit ziet bij mij binnen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
MIME-Version: 1.0
Content-Type: multipart/mixed;
    boundary="XX-1234DED00099A"
Content-Transfer-Encoding: 8bit

This is a multi-part message in MIME format.

--XX-1234DED00099A
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 8bit

<b>hoi</b>
--XX-1234DED00099A
Content-Type: application/octet-stream; name="test.html"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.html"

hierstaatdefile


--XX-1234DED00099A--
Content-Type: image/jpg; name="hand.jpg"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="hand.jpg"

hierstaatdefile


--XX-1234DED00099A--


Volgens mij lijkt alles goed, maar ik krijg maar 1 attachment binnen!, en dat is de eerste

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oh ik mis deze code nog even:
code:
1
        mail('email@email.nl', 'hoi', '', $header);

Acties:
  • 0 Henk 'm!

Verwijderd

Werkt het als je Content-Type: image/jpg vervangt door Content-Type: image/jpeg?

[ Voor 4% gewijzigd door Verwijderd op 02-11-2003 20:37 ]


Acties:
  • 0 Henk 'm!

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 04-08 16:29

Tim

code:
1
2
Content-Type: multipart/mixed;
    boundary=&quot;XX-1234DED00099A&quot;

Geeft aan waar je attachment begint (en welke)

Je moet dus een 2e aparte code maken voor je 2e attachment, en die dan ook in je headers vermelden. Makkelijkste is denk om even een mailtje te sturen naar je zelf met 2 attachments en dan kijken wat de headers zijn (of de hele source natuurlijk). Het is iig volgens mij niet simpelweg nog een keer boundrary=bladiebla

[ Voor 5% gewijzigd door Tim op 02-11-2003 21:09 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Timpie schreef op 02 november 2003 @ 21:08:
code:
1
2
Content-Type: multipart/mixed;
    boundary="XX-1234DED00099A"

Geeft aan waar je attachment begint (en welke)

Je moet dus een 2e aparte code maken voor je 2e attachment, en die dan ook in je headers vermelden. Makkelijkste is denk om even een mailtje te sturen naar je zelf met 2 attachments en dan kijken wat de headers zijn (of de hele source natuurlijk). Het is iig volgens mij niet simpelweg nog een keer boundrary=bladiebla
dat is het dus simpelweg wel :)

Voor meer info RFC 2045 en RFC 2046

[ Voor 12% gewijzigd door Verwijderd op 02-11-2003 21:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
wat doe ik dan fout

Acties:
  • 0 Henk 'm!

Verwijderd

voor de afbeelding geef je een ongeldig content-type mee.

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Je boundaries zijn in ieder geval verkeerd.

De een na laatste boundary is een end boundary en dat zou niet zo moeten zijn.

Dus stel je boundary is: "boundary" dan zal de body van het email bericht er zo uit zien:

--boundary

text/plain gedeelte

--boundary

attachment 1

--boundary

attachment 2

--boundary--

NB, ik heb alle mimeheaders voor het gemak ff weggelaten.

[ Voor 3% gewijzigd door stekkel op 02-11-2003 21:28 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke bedankt met de 2 bovenstaande tips (end boundry en content type) werkt het wel.
Pagina: 1