Avatar billede morten_21 Nybegynder
03. november 2005 - 11:09 Der er 3 kommentarer

sendmail: Ingen body i OE

Jeg har følgende mailhalløj der fungerer fint - så længe jeg sender til en Outlook 2003 klient, men hvis jeg sender til Outlook Express klienter er body'en tom.

Kode:

<?php
$subject="bla bla bla";
//add From: header
$headers = 'From: $afsender'."\n";

//specify MIME version 1.0
$headers .= 'MIME-Version: 1.0'."\n";

//unique boundary
$boundary = md5(time().rand(1,100));

//tell e-mail client this e-mail contains//alternate versions
$headers .= "Content-Type: multipart/mixed; boundary = $boundary\n\n";

//plain text version of message
$body = "\n\nBla bla bla bla bla.";

//send message
mail("$modtager", "$subject", $body, $headers);
?>

Er der nogen god forklaring på dette? Det er jo ren tekst, så umiddelbart skulle det jo bare virke.
Avatar billede wuggawugga Nybegynder
03. november 2005 - 13:22 #1
Har du en html version af din mail?
Hvis det er meningen at du vil sende både text/plain og text/html mener jeg at du bør bruge multipart/alternative. Desuden ser det ud til at du ikke bruger den boundary du sætter op, eller angiver en content-type for din body.
Jeg tror dit problem er med dit MIME format.
Med mindre at du helst vil lave det hele selv, synes jeg at du skal bruge PEAR klassen Mail_Mime til at opbygge din mail. Den tager højde for headers, tegnsæt, encodings og embeddede billeder.
Avatar billede morten_21 Nybegynder
03. november 2005 - 15:30 #2
Nej jeg bruger godt nok kun en ren tekst version.
Og jeg vil mene at boundary bliver brugt i headeren - dog uden jeg ved hvad den gør :-)

Jeg vil kigge på mail_mime, men er der nogen med forslag til hvilke Mime- og content types jeg skal bruge i min eksisterende kode istedet, er input mere end velkomne :-)
Avatar billede wuggawugga Nybegynder
03. november 2005 - 16:25 #3
Boundary bliver brugt til at adskille forskellige dele i en sammensat mail besked. Du kan sende ren tekst, html og billeder i samme email, som bare er en lang tekst fil. For at mailklienten skal kunne se hvor de forskellige dele starter og slutter, bruges en unik boundary til at adskille dem.

HTML er smart fordi det ser bedre ud end ren tekst. Man sender ofte en tekstversion af samme mail med, for at tage hensyn til de klienter der ikke kan vise html. De billeder der bliver brugt i HTML mailen, bliver også sendt med, da mange mail klienter nægter at vise almindelige http://foo/bar.jpg billeder, da disse kan bruges til at spore brugeren. Der er faktisk mange ting der ikke må være i en mail af samme grund.

Hvis du bare vil sende mails i ren tekst, kan du nøjes med mail() og de rigtige headers. Svjh er de vigtigste: From, To, Return-path, Content-type og selvf. Subject.

Mail_Mime er ret nem at bruge, men nok lidt overkill (PEAR klasser spiser en del RAM) hvis du ikke har planer om at sende multipart mails. Men PEAR har da også mere simple klasser.
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