[php] Mail met bijlage => rood kruisje bij aankomst

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heuj :)

Nou probeer ik met mail() bijlages te versturen, dit blijkt toch wat lastiger dan verwacht, voornamelijk omdat ik d'r al 2 uur mee bezig ben.
Van de 4 gevonden voorbeeldscripts waren d'r 3 compleet bagger vanwege notices, gebrek aan superglobals enzo ...
Kom ik uiteindelijk een script tegen dat d'r redelijk goed uit ziet. Na een beetje aanpassing van 't script kreeg ik dit:
PHP:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?
  if(isset($_FILES["bijlage"]) == TRUE)
  {
  $van = "JPeetje"; 
  $aan = "mijn@email.adres"; 
  $antwoord_naar = "mijn@2e_email.adres"; 
  $betreft = "bijlage test gedoe"; 

  $header = "F-r-o-m: " . $van . " \n" 
          . "Reply-to: " . $antwoord_naar . " \n";  // 't Forum gaat nogal vaag om met 'From' ...

  $bericht = "Test ..."; 

  $encoding = "base64"; 

  $fp = @fopen($_FILES["bijlage"]["tmp_name"],"r"); 
    if($fp == FALSE) 
    {
    die("Er trad een fout op bij het inlezen van de bijlage.\n<br>Het script werd vroegtijdig beeindigd.");
    }

  $file_content = fread($fp,filesize($_FILES["bijlage"]["tmp_name"])); 
  $file_content =  chunk_split(base64_encode($file_content)); 

  $boundary = strtoupper(md5(uniqid(time())));    //unieke boundary aanmaken 

  //Algemene header -> het is een MIME mail 
  $header .= "MIME-version: 1.0\n"; 
  $header .= "Content-Type: multipart/mixed;\n"; 
  $header .= "\tboundary=" . $boundary . "\n\n"; 

  //Header voor het bericht 
  $header .= "--" . $boundary . "\n"; 
  $header .= "Content-Type: text/plain;\n"; 
  $header .= "\tcharset=\"iso-8859-1\"\n";
  $header .= "Content-Transfer-Encoding: quoted-printable\n\n"; 

  //De body (bericht) weergeven 
  $header .= $bericht . "\n\n"; 

  //Header voor het attachment 
  $header .= "--" . $boundary . "\n"; 
  $header .= "Content-Type: " . $_FILES["bijlage"]["type"] . "\n"; 
//  $header .= "\tname=\"" . $_FILES["bijlage"]["name"] . "\"\n"; 
  $header .= "Content-Transfer-Encoding: " . $encoding . "\n"; 
  $header .= "Content-Disposition: attachment;\n"; 
  $header .= " filename=\"" . $_FILES["bijlage"]["name"] . "\"\n\n"; 


  $header .= $file_content . "\n\n";     //Invoegen attachment 
  $header .= "--" . $boundary . "--";    //Afsluiten van de mail door de boundary nogmaals te plaatsen 

    if(mail($aan,$betreft,$bericht,$header) == TRUE)
    { 
    echo "Mail succesvol verstuurd !";
echo "<br><br><b>Headers: </b><br><br><pre>" . $header . "</pre>";
    }
    else
    { 
    echo "\nKon geen mail versturen";
    }
  }
  else
  {
  ?>
<form enctype="multipart/form-data" action="<? echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<input type="file" name="bijlage"><input type="submit" value="Go !"></form>
  <?
  }
?>


Wat d'r wel lukt:
- Mail versturen
- Bijlage meesturen (Afbeelding: 3.jpg)

Wat d'r niet lukt:
- Afbeelding correct laten laden, ik krijg een rood kruisje, ook als ik de afbeelding opsla en open in bijv. IE.

Vraagjes:
- 't Type bestand is image/pjpeg, geen text/html of text/plain, dus moet $encoding toch base64 zijn ?
- Weet iemand wat ik fout doe ? Volgens mij doe ik -iets- fout met de headers, maar kep geen ervaring met bijlages, dus kweet 't niet :)

Alvast bedankt !

Acties:
  • 0 Henk 'm!

  • DPLuS
  • Registratie: April 2000
  • Niet online

DPLuS

 

Ik weet niet of je er iets aan hebt, maar er bestaat ook al een opensource PHP Mail Class: http://phpmailer.sourceforge.net

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Als je dergelijke uitgebreide mails wilt gaan sturen, overweeg dan om mail() met rust te laten en via fsockopen zelf met de mail-server te communiceren.

Op php.net staan tussen de user-notes wel wat voorbeelden. Ikzelf vind dit veel overzichtelijker werken dan mail()/

Oviergens schijdt je headers met een cariage return EN een newline, dus
code:
1
\r\n
, en niet alleen met een newline

[ Voor 19% gewijzigd door frickY op 17-08-2004 20:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
DPLuS schreef op 17 augustus 2004 @ 20:01:
Ik weet niet of je er iets aan hebt, maar er bestaat ook al een opensource PHP Mail Class: http://phpmailer.sourceforge.net
Hm, misschien wel.
Werkt dit script met mail() of met fsockopen() (zoals frickY omschreef) ?
frickY schreef op 17 augustus 2004 @ 20:05:
Als je dergelijke uitgebreide mails wilt gaan sturen, overweeg dan om mail() met rust te laten en via fsockopen zelf met de mail-server te communiceren.

Op php.net staan tussen de user-notes wel wat voorbeelden. Ikzelf vind dit veel overzichtelijker werken dan mail()/
Kvind dit met die mailtjes prutsen best interessant ja, daar ga ik me wel in verdiepen ;)
Maar atm wil ik eerst dit scriptje ff werkend krijgen als je 't niet erg vind.
Oviergens schijdt je headers met een cariage return EN een newline, dus
code:
1
\r\n
, en niet alleen met een newline
Aangepast, thanx :)
Maar helaas, nog steeds een rood kruisje.

Nog ideeën ?

[ Voor 4% gewijzigd door Verwijderd op 17-08-2004 20:47 ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Hm, misschien wel.
Werkt dit script met mail() of met fsockopen() (zoals frickY omschreef) ?
Geen idee, maar het werkt wel gewoon een enorm eenvoudig. Binnen 5 minuten kan je mail versturen inclusief bijlagen enzovoorts. Gewoon even proberen uds, want dit soort dingen opnieuw doen heeft volgens mij geen zin.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
djluc schreef op 17 augustus 2004 @ 21:07:
Geen idee, maar het werkt wel gewoon een enorm eenvoudig. Binnen 5 minuten kan je mail versturen inclusief bijlagen enzovoorts. Gewoon even proberen uds, want dit soort dingen opnieuw doen heeft volgens mij geen zin.
Heeft wel zin, je leert ervan.
Ik weet trouwens dat 't wiel opnieuw uitvinden geen zin heeft, maar atm wil ik echt ff deze code werkend krijgen als je 't niet erg vind ;)

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

dat gaat meer tijd kosten (onderhoud meegerekend) dan die mail-class onder de knie krijgen. waarschijnlijk kan je 3/4 gewoon recyclen, dus ik raad je sterk aan om die klasse te gebruiken.

geloof me, daar ben ik eerder de fout mee ingegaan, en ik heb een heel project 3 keer zo lang zien duren door die instelling.

edit:
wat zijn de verschillen tussen de opgeslagen attachment en het originele bestand? binary vergelijken wil wel eens helpen met dit soort dingen. Misschien ergens een spatie?

[ Voor 24% gewijzigd door MBV op 18-08-2004 00:16 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ehm, je stuurt de file mee in de headers van het mailtje?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MBV schreef op 18 augustus 2004 @ 00:12:
dat gaat meer tijd kosten (onderhoud meegerekend) dan die mail-class onder de knie krijgen. waarschijnlijk kan je 3/4 gewoon recyclen, dus ik raad je sterk aan om die klasse te gebruiken.

geloof me, daar ben ik eerder de fout mee ingegaan, en ik heb een heel project 3 keer zo lang zien duren door die instelling.
Ik snap je standpunt en normaal gesproken zou ik 't accepteren, maar ik heb al 2 uur met die headers lopen klooien dus ik wil nou ook weten wat ik fout doe ;)
edit:
wat zijn de verschillen tussen de opgeslagen attachment en het originele bestand? binary vergelijken wil wel eens helpen met dit soort dingen. Misschien ergens een spatie?
Het originele bestand wordt geupload, deze wordt meegestuurd met 't mailtje nadat base64_encode() en chunk_split() erop zijn toegepast. Als ik andere scripts moet geloven, is het vereist dat je die 2 functies toepast op je bijlage wanneer je base64 als codering hebt. Dat is hier 't geval dacht ik, aangezien 't type bijlage niet text/plain of text/html is.
Binary vergelijken ken ik niet, bedoel je daarmee de headers van mijn script met de headers van een goedwerkend script vergelijken ?
Erkens schreef op 18 augustus 2004 @ 00:22:
ehm, je stuurt de file mee in de headers van het mailtje?
Ja (regel 53), en ik geef ook 't bestandstype en de bestandsnaam op in de headers (regels 46 en 50).

Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Het werkt veel makkelijker als je even de source van het aangekomen mailtje hier post... dan kunnen we zo zien wat er mis mee is (eventuele grote stukken data ertussenuit knippen aub :) ).

Hmm... misschien weet ik het zo wel: encode je de data dan ook echt met base64? Je *zegt* in de headers dat je het doet, maar ik zie je het nergens doen :P

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 18 augustus 2004 @ 01:40:
Ja (regel 53), en ik geef ook 't bestandstype en de bestandsnaam op in de headers (regels 46 en 50).
Lekker slim dan om je content via de headers te sturen. Vergeet niet dat PHP ook wat headers toevoegd.

Bekijk ook eens de source van het mailtje dat aangekomen is, en kijk waar deze niet overeenkomt met de betrokken RFC's. Ook zou je de attachment zelf er uit kunnen halen en door base64_decode kunnen halen en kijken of daar een bruikbaar plaatje uit komt :)

Acties:
  • 0 Henk 'm!

  • Dwightjo
  • Registratie: Juni 2003
  • Laatst online: 23-08 13:40
ik had laatst het zelfde probleem, bleek dat de locatie waar het script tijdelijk zijn file kwijt moest, niet beschrijfbaar is. Resultaat een attachment van de juiste grote, maar een leuk ROOD kruis.

Controleer dat even

Illest Alive


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:51

Creepy

Tactical Espionage Splatterer

frickY schreef op 17 augustus 2004 @ 20:05:
Als je dergelijke uitgebreide mails wilt gaan sturen, overweeg dan om mail() met rust te laten en via fsockopen zelf met de mail-server te communiceren.

Op php.net staan tussen de user-notes wel wat voorbeelden. Ikzelf vind dit veel overzichtelijker werken dan mail()/

Oviergens schijdt je headers met een cariage return EN een newline, dus
code:
1
\r\n
, en niet alleen met een newline
Niet volgens de email rfc standaard. Die roept dat het newlines moeten zijn (\n). O.a. qmail doet hier bijv. moeilijk over.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • DPLuS
  • Registratie: April 2000
  • Niet online

DPLuS

 

Erkens schreef op 18 augustus 2004 @ 09:49:
[...]

Lekker slim dan om je content via de headers te sturen. Vergeet niet dat PHP ook wat headers toevoegd.

Bekijk ook eens de source van het mailtje dat aangekomen is, en kijk waar deze niet overeenkomt met de betrokken RFC's. Ook zou je de attachment zelf er uit kunnen halen en door base64_decode kunnen halen en kijken of daar een bruikbaar plaatje uit komt :)
Kopieer hier inderdaad de plaintext source van het mailtje eens (met een <<knip>> in de base64-geencode data of course...)
(In Outlook Express dus: dubbelklik op mailtje, bestand, eigenschappen, bron van bericht...)


Toevallig heb ik hier nog een archaïsch stukje code van mij gevonden, dit werkte bij mij, n.a.v. deze site:
http://www.phpbuilder.com/columns/kartic20000807.php3

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            $headers = "From: <$email>\r\n";
            $headers .= "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: multipart/mixed;\r\n\tboundary=\"".$boundary."\"\r\n";
            $headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
            $headers .= "This is a multi-part message in MIME format.\r\n\r\n";

            $headers .= "--".$boundary."\r\n";
            $headers .= "Content-Type: text/plain;\r\n\tcharset=\"iso-8859-1\"\r\n";
            $headers .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
            $headers .= $message."\r\n\r\n";

            $headers .= "--".$boundary."\r\n";
            $headers .= "Content-Type: image/jpeg;\r\n\tname=\"".$ItemID.".jpg\"\r\n";
            $headers .= "Content-Transfer-Encoding: base64\r\n";
            $headers .= "Content-Disposition: attachment;\r\n\tfilename=\"".$ItemID.".jpg\"\r\n\r\n";
            $headers .= $data."\r\n\r\n";
            $headers .= "--".$boundary."--";

            mail($to, $subject, "", $headers);

[ Voor 58% gewijzigd door DPLuS op 18-08-2004 10:22 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op 18 augustus 2004 @ 09:49:
Lekker slim dan om je content via de headers te sturen. Vergeet niet dat PHP ook wat headers toevoegd.
Hoor je 't niet met de headers mee te sturen dan ?
Dwightjo schreef op 18 augustus 2004 @ 09:55:
ik had laatst het zelfde probleem, bleek dat de locatie waar het script tijdelijk zijn file kwijt moest, niet beschrijfbaar is. Resultaat een attachment van de juiste grote, maar een leuk ROOD kruis.
't Bestand is leesbaar en schrijfbaar, daar ligt 't niet aan :)
Creepy schreef op 18 augustus 2004 @ 10:13:
Niet volgens de email rfc standaard. Die roept dat het newlines moeten zijn (\n). O.a. qmail doet hier bijv. moeilijk over.
*past 't weer aan* :p
DPLuS schreef op 18 augustus 2004 @ 10:15:
Kopieer hier inderdaad de plaintext source van het mailtje eens (met een <<knip>> in de base64-geencode data of course...)
(In Outlook Express dus: dubbelklik op mailtje, bestand, eigenschappen, bron van bericht...)
Komt-ie :p
Return-path: <jpeetje@wxs.nl>
Received: from smtp14.wxs.nl ([195.121.5.173])
by po08.wxs.nl (iPlanet Messaging Server 5.2 HotFix 1.25 (built Mar 3 2004))
with ESMTP id <0I2K00CTN7NETZ@po08.wxs.nl> for mijn@email.adres; Mon,
16 Aug 2004 23:57:14 +0200 (MEST)
Received: from jpeetje ([...].speed.planet.nl [[...]])
by smtp14.wxs.nl
(iPlanet Messaging Server 5.2 HotFix 1.25 (built Mar 3 2004)) with SMTP id
<0I2K00AMK7N8EP@smtp14.wxs.nl> for mijn@email.adres; Mon,
16 Aug 2004 23:57:14 +0200 (CEST)
Date: Tue, 17 Aug 2004 00:01:37 +0100
Wrom: JYFMYXOEAIJJPHSCR
Subject: bijlage test gedoe
To: mijn@email.adres
Reply-to: mijn@2eemail.adres
Message-id: <0I2K00AN97NDEP@smtp14.wxs.nl>
MIME-version: 1.0
Content-type: multipart/mixed; boundary=EDE2EB07401EAE3C956B8A0105A72914
Original-recipient: rfc822;mijn@email.adres

--EDE2EB07401EAE3C956B8A0105A72914
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Testen ...
--EDE2EB07401EAE3C956B8A0105A72914
Content-Type: image/pjpeg
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="3.jpg"
/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAMQAA/+4AIUFkb2JlAGTAAAAAAQMA
EAMDBgkAACYAAABD5AAAlID/2wCEAAgGBgYGBggGBggMCAcIDA4LCAgLDhANDQ4NDRARDA4ODg4M

[...]

4PUYVTrrTAc7lusSmYsCowLqVMFBd5B9OoqTCNS3DZQtCLRlBNGgMCLqGa8xWlyubbY7bRhhHNfm
avKQWtainAV/Ep4ZWGIl28yyW61ZKz6gNNTX+495zzH/ANma8S1QuMdeJT7gXNfE8Zwyv33P/9k=
--EDE2EB07401EAE3C956B8A0105A72914--

Testen ...
Toevallig heb ik hier nog een archaïsch stukje code van mij gevonden, dit werkte bij mij, n.a.v. deze site:
http://www.phpbuilder.com/columns/kartic20000807.php3

[php script]
Gekopieerd, beetje aangepast qua variabelen. Hoe 't er nu uit ziet:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  $file_content = fread($fp,filesize($_FILES["bijlage"]["tmp_name"])); 
  $file_content =  chunk_split(base64_encode($file_content)); 

  $boundary = strtoupper(md5(uniqid(time())));    //unieke boundary aanmaken 

  $headers = "From: <" . $van . ">\n"; 
  $headers .= "MIME-Version: 1.0\n"; 
  $headers .= "Content-type: multipart/mixed;\n\tboundary=\"" . $boundary . "\"\n"; 
  $headers .= "Content-Transfer-Encoding: 7bit\n\n"; 
  $headers .= "This is a multi-part message in MIME format.\n\n"; 

  $headers .= "--".$boundary."\n"; 
  $headers .= "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n"; 
  $headers .= "Content-Transfer-Encoding: 7bit\n\n"; 
  $headers .= $bericht . "\n\n"; 

  $headers .= "--".$boundary."\n"; 
  $headers .= "Content-Type: image/jpeg;\n\tname=\"" . $_FILES["bijlage"]["name"] . "\"\n"; 
  $headers .= "Content-Transfer-Encoding: base64\n"; 
  $headers .= "Content-Disposition: attachment;\n\tfilename=\"" . $_FILES["bijlage"]["name"] . "\"\n\n"; 
  $headers .= ($file_content . "\n\n"); 
  $headers .= "--".$boundary."--";

't Viel me op dat de encoding op 7bit stond, hoort dat bij bijlages ?
't Resultaat van 't mailtje was dat d'r geen bijlage bij was. Headers van dat mailtje:
Return-path: <jpeetje@wxs.nl>
Received: from smtp15.wxs.nl ([195.121.5.16])
by po08.wxs.nl (iPlanet Messaging Server 5.2 HotFix 1.25 (built Mar 3 2004))
with ESMTP id <0I2N00K1UP1DTR@po08.wxs.nl> for mijn@email.adres; Wed,
18 Aug 2004 21:05:41 +0200 (MEST)
Received: from jpeetje ([...].speed.planet.nl [[...]])
by smtp15.wxs.nl
(iPlanet Messaging Server 5.2 HotFix 1.25 (built Mar 3 2004)) with SMTP id
<0I2N00COLP1EK6@smtp15.wxs.nl> for mijn@email.adres; Wed,
18 Aug 2004 21:05:38 +0200 (CEST)
Date: Wed, 18 Aug 2004 21:09:49 +0100
Wrom: TNHGSWZIDREXCAXZO
Subject: bijlage test gedoe
To: mail@email.adres
Reply-to: mail@2eemail.adres
Message-id: <0I2N00CORP1EK6@smtp15.wxs.nl>
Original-recipient: rfc822;mijn@email.adres

Testen ...
Vaag :p

Thanx voor de links, kga ze ff doornemen :)

[ Voor 21% gewijzigd door Verwijderd op 18-08-2004 21:22 ]


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Even n mailtje uit Outlook erbij gepakt welke n jpeg als bijlage heeft;
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_NextPart_000_6e26_3d71_53b6"

------=_NextPart_000_6e26_3d71_53b6
Content-Type: image/pjpeg; name="DSCF0006.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="DSCF0006.JPG"

/9j/4SmqRXhpZgAASUkqAAgAAAALAA8BAgAJAAAAkgAAABABAgAPAAAAnAAA
ABIBAwABAAAAAQAAABoBBQABAAAArAAAABsBBQABAAAAtAAAACgBAwABAAAA
[..]
8v8A61OcXO0YCjLniuZELS2UyKyOx2H5S7d8f/WNMWW0tLlryT52j+WMsevH
/wBY1FOU01oVUpycORkGpaiLu5eQFS33eGwMegHSoJZRsZFzlvvEjHbr/n3r
R6y52VSh7KEYx3P/2Q==


------=_NextPart_000_6e26_3d71_53b6--


Zoek de verschillen...

Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Creepy schreef op 18 augustus 2004 @ 10:13:
[...]

Niet volgens de email rfc standaard. Die roept dat het newlines moeten zijn (\n). O.a. qmail doet hier bijv. moeilijk over.
Is het nou zo moeilijk om te controleren wat je zegt?

RFC 2822, die van e-mail
2.2. Header Fields

Header fields are lines composed of a field name, followed by a colon
(":"), followed by a field body, and terminated by CRLF.
2.3. Body

The body of a message is simply lines of US-ASCII characters. The
only two limitations on the body are as follows:

- CR and LF MUST only occur together as CRLF; they MUST NOT appear
independently in the body.
CRLF, dat is dus \r\n in php. Basta.

Verder: tussen de mime-headers en de data moet een lege regel zitten, het lijkt erop alsof je die niet hebt. Ook moet er een lege regel tussen data en de volgende mime-header.

[ Voor 4% gewijzigd door Kuhlie op 18-08-2004 23:59 . Reden: url rfc 2882 toegevoegd ]


Verwijderd

Topicstarter
frickY schreef op 18 augustus 2004 @ 21:38:
Even n mailtje uit Outlook erbij gepakt welke n jpeg als bijlage heeft;

[ mail headers ]

Zoek de verschillen...
Hm, inderdaad wel zo handig om dat te doen ja :)
Is het trouwens verplicht dat de boundary 'NextPart' moet bevatten ?
Kuhlie schreef op 18 augustus 2004 @ 23:56:
CRLF, dat is dus \r\n in php. Basta.
*weer aangepast :p *
Verder: tussen de mime-headers en de data moet een lege regel zitten, het lijkt erop alsof je die niet hebt. Ook moet er een lege regel tussen data en de volgende mime-header.
Klopt, die had / heb ik niet.
Dit kan nogal raar overkomen, maar ik krijg 'm er ook niet tussen :/
PHP:
1
2
3
4
  $header .= "Content-Disposition: attachment; filename=\"" . $_FILES["bijlage"]["name"] . "\"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"; 


  $header .= "\r\n" . $file_content . "\r\n\r\n";     //Invoegen attachment 
Zoals je ziet, 20 (of weetikveel hoeveel, ik ga ze niet tellen) keer \r\n doe, maar elk mailtje dat ik verstuur bevat geen lege regel :/
En ja, ik zet 't op de goeie regel, ik heb ff een paar willekeurige letters toegevoegd aan die regel, in de broncode van 't mailtje kon ik dit op die regel terugvinden.
Wat doe ik nou fout dan ?

[ Voor 10% gewijzigd door Verwijderd op 19-08-2004 03:21 ]


  • Kuhlie
  • Registratie: December 2002
  • Niet online
Verwijderd schreef op 19 augustus 2004 @ 03:17:
[...]
Hm, inderdaad wel zo handig om dat te doen ja :)
Is het trouwens verplicht dat de boundary 'NextPart' moet bevatten ?
Nee. Het verschilt per programma (Outlook Express, Pine, etc) wat er in die regel staat, het gaat er alleen om dat die uniek is :)
Verwijderd schreef op 19 augustus 2004 @ 03:17:
[...]
Klopt, die had / heb ik niet.
Dit kan nogal raar overkomen, maar ik krijg 'm er ook niet tussen :/
[php] $header .= "Content-Disposition: attachment; filename=\"" . $_FILES["bijlage"]["name"] . "\"\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n";
Hmm... da's niet heel vreemd eigenlijk. mail() ziet dat je in de headers lege regels wilt hebben, maar dat mag helemaal niet in headers. mail() zal ze eruitgehaald hebben. Die mime-headers horen dan ook gewoon in de data. Voorbeeldje:

Dit zijn headers:
To: kees
From: piet
Subject: sjaak
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_NextPart_000_6e26_3d71_53b6"
En dit is data (body):
------=_NextPart_000_6e26_3d71_53b6
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Testen ...

------=_NextPart_000_6e26_3d71_53b6
Content-Type: image/pjpeg; name="DSCF0006.JPG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="DSCF0006.JPG"

/9j/4SmqRXhpZgAASUkqAAgAAAALAA8BAgAJAAAAkgAAABABAgAPAAAAnAAA
ABIBAwABAAAAAQAAABoBBQABAAAArAAAABsBBQABAAAAtAAAACgBAwABAAAA
[..]
8v8A61OcXO0YCjLniuZELS2UyKyOx2H5S7d8f/WNMWW0tLlryT52j+WMsevH
/wBY1FOU01oVUpycORkGpaiLu5eQFS33eGwMegHSoJZRsZFzlvvEjHbr/n3r
R6y52VSh7KEYx3P/2Q==


------=_NextPart_000_6e26_3d71_53b6--

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Nee in mail() gaat dat niet werken nee.
Doe het nou maar gwn met fsockopen.. dan ben je in 5minuten klaar 8)7

  • Kuhlie
  • Registratie: December 2002
  • Niet online
frickY schreef op 19 augustus 2004 @ 19:10:
Nee in mail() gaat dat niet werken nee.
Doe het nou maar gwn met fsockopen.. dan ben je in 5minuten klaar 8)7
Ik zei niet dat het niet werkt, ik wilde alleen duidelijk maken dat hij niet alles in de headers kon stoppen :)

Vanaf //Header voor het bericht zijn het geen headers meer, maar is het data/body (maar je hebt wel gelijk hoor: met fsockopen is het ook maar 20 regels extra code met *veel* meer controle over wat je doet).

[ Voor 14% gewijzigd door Kuhlie op 19-08-2004 19:33 ]

Pagina: 1