01. oktober 2010 - 22:38 Der er 2 kommentarer og
1 løsning

php mail multipart

Jeg synes ikke at kunne lave en multipart mail.  Som en simpel oevelse vil jeg lave en mail med en normal tekst og en html del.  Jeg har skrevet nedenstaaende kode, med hjaelp blandt andet fra http://articles.sitepoint.com/print/advanced-email-php , men den resulterer i en mail der gentager koden i stedet for at fortolke den.  Hvor gaar jeg galt i byen?

Her er koden:

<?
$to = "christian.jorgensen@skynet.be";
$subject = "Mailtest";
$headers = "From: christian.jorgensen@skynet.be\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type:multipart/alternative; boundary='abcdefg'\r\n";
$message = "This is a multipart message\r\n\r\n";
$message .= "--abcdefg\r\n";
$message .= "Content-Type: text/plain\r\n\r\n";
$message .= "Linie 1\r\n";
$message .= "Linie 2\r\n";
$message .= "Linie 3\r\n\r\n";
$message .= "--abcdefg\r\n";
$message .= "Content-Type: text/html;\r\n\r\n";
$message .= "Linie 1\r\n<br/>";
$message .= "Linie 2\r\n<br/>";
$message .= "Linie 3\r\n<br/>";
$message .= "--abcdefg--";
mail($to, $subject, $message, $headers);
echo "Mail sent!";
?>

og her er den email jeg modtager:

This is a multipart message

--abcdefg
Content-Type: text/plain

Linie 1
Linie 2
Linie 3

--abcdefg
Content-Type: text/html;

Linie 1
<br/>Linie 2
<br/>Linie 3
<br/>--abcdefg
Avatar billede Slettet bruger
02. oktober 2010 - 10:37 #1
Kunne det tænkes at du tester/læser den leverede email med Gmail (google) ?

For der er vist noget galt dér: At de ikke forstår "\r\n" som linjeskift i header.
- men kun "\n"


Jeg måtte tilføje dette lille hack i min mail_utf8() funktion:

...
if (preg_match('/gmail/',$to))
  $header = str_replace("\r\n","\n",$header);
...

Hvilket jeg, iøvrigt, godt kunne tænke mig at høre andres mening om : )
02. oktober 2010 - 21:17 #2
Jeg har erstattet alle "\r\n" med "\n" men med samme resultat, at jeg faar en email med koden skrevet ud i stedet for at koden bliver fortolket.

Er der nogen med erfaring i multipart email der kan spotte syntaks- eller andre fejl?  Eller som kan taenke paa grunde til at jeg faar ovenstaaende resultat af koden?

(Jeg haaber ikke at dette bliver en duplikat - jeg lavede et indlaeg med lignende indhold, men det forsvandt.)
03. oktober 2010 - 21:07 #3
Tak for hjaelpen - fordi ingen gav mig en nem loesning var jeg noedt til selv at finde ud af det den haarde vej saa det nok sidder fast:  Jeg googlede mig til et eksempel der virkede og byggede det linie for linie om til ovenstaaende kode indtil det ikke laengere virkede, og derved fandt jeg problemet:  I $headers opgiver jeg en boundary som 'abcdefg' hvorimod jeg i $message bruger abcdefg, altsaa uden anfoerselstegn.  Hvis jeg enten i $header aendrer til abcdefg eller jeg i $message bruger 'abcdefg' virker det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester