Avatar billede michaeltryl Seniormester
19. januar 2007 - 02:14 Der er 18 kommentarer og
1 løsning

html i php mail

Dette spørgsmål er sikker besvaret, men jeg kan ikke lige finde en løsning nogen steder.
Jeg kan sagtens sende en alm. tekst mail med php, men hvordan gør jeg sådan at de brugere som har mulighed for at læse html mails får teksten formateret med html når de modtager en mail, mens de brugere der ikke kan læse html mails kun får en tekst version?

Jeg vil høre om der er en som kan fortælle eller har et link til en tutorial, som fortæller om følgende.
Avatar billede Six Nybegynder
19. januar 2007 - 05:34 #1
Du kan installere dette framework: http://pear.php.net/

Når det er gjort(tager nok nogle forsøg) kan du installere denne pakke: http://pear.php.net/package/Mail_Mime

Så skulle det være lige til at gå til :)

Der findes nok andre løsninger, men jeg har selv valgt denne.
Avatar billede kimg Nybegynder
19. januar 2007 - 09:02 #2
Du kan bruge dette.

<?php
$headers = "From: Dinmail.dk\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$boundary = uniqid();
$headers .= "Content-Type: multipart/alternative" . "; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message.\r\n\r\n";
//Tekst beskeden
$headers .= "--$boundary\r\n" .
  "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This is the plain text version!"));
//HTML beskeden
$headers .= "--$boundary\r\n" .
  "Content-Type: text/html; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This the <b>HTML</b> version!"));

//send mail
mail("enAnden@mail.dk", "An HTML Message", "", $headers);
?>

Kim
Avatar billede kimg Nybegynder
19. januar 2007 - 09:16 #3
En lile rettelse

<?php
$headers .= "From: enEmail.dk\n";
$headers .= "MIME-Version: 1.0\r\n";
$boundary = uniqid();
$headers .= "Content-Type: multipart/alternative" . "; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message.\r\n\r\n";
$headers .= "X-Mailer: domæne.dk\r\n";
//Tekst beskeden
$headers .= "--$boundary\r\n" .
  "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This is the plain text version!"));
//HTML beskeden
$headers .= "--$boundary\r\n" .
  "Content-Type: text/html; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This the <b>HTML</b> version!"));

//send mail
mail("andenEmail.dk", "Overskrift", "", $headers);
?>
Avatar billede michaeltryl Seniormester
19. januar 2007 - 10:28 #4
Til fjappe jeg kan ikke lige se hvad det er du vil have mig til at installere fra det første link.

Til kimg jeg vil lige være sikker på jeg har forstået det rigtigt.
jeg indsætter dit script og sender sådan
mail("andenEmail.dk", "Overskrift", "Beskeden her", $headers);
under dette indsætter jeg så det script der sender den alm. tekst mail, eller er der noget jeg har misforstået.
Avatar billede kimg Nybegynder
19. januar 2007 - 16:54 #5
Det hele bliver sendt på en gang, du skal bare sætte det ind som jeg har gjort men selvfølgelig rette mail adr og din tekst.

Kim
Avatar billede michaeltryl Seniormester
19. januar 2007 - 19:56 #6
jeg havde overset de to noter med tekst og html beskeder, men det virker ikke jeg har en side med nedstående script (den kode du har postet samt beskederne), men får følgende fejl

Warning: uniqid() expects at least 1 parameter, 0 given in /home/www/demo.magiske-michael.dk/mail.php on line 4

jeg har skiftet mail adresserne ud

<?php
$headers .= "From: min@mail.dk\n";
$headers .= "MIME-Version: 1.0\r\n";
$boundary = uniqid();
$headers .= "Content-Type: multipart/alternative" . "; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message.\r\n\r\n";
$headers .= "X-Mailer: domæne.dk\r\n";

    $besked  = "Dette er tekst beskeden\r\ntjekker om det virker";

$headers .= "--$boundary\r\n" .
  "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This is the plain text version!"));

    $besked  = "Dette er <b>html</b> beskeden<br>tjekker om det virker";

$headers .= "--$boundary\r\n" .
  "Content-Type: text/html; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This the <b>HTML</b> version!"));

//send mail
mail("en@mail.dk", "Overskrift", "$besked", $headers);
?>
Avatar billede kimg Nybegynder
19. januar 2007 - 20:04 #7
<?php
$headers .= "From: min@mail.dk\n";
$headers .= "MIME-Version: 1.0\r\n";
$boundary = uniqid("htmlMail");
$headers .= "Content-Type: multipart/alternative" . "; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message.\r\n\r\n";
$headers .= "X-Mailer: domæne.dk\r\n";

    $besked  = "Dette er tekst beskeden\r\ntjekker om det virker";

$headers .= "--$boundary\r\n" .
  "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This is the plain text version!"));

    $besked  = "Dette er <b>html</b> beskeden<br>tjekker om det virker";

$headers .= "--$boundary\r\n" .
  "Content-Type: text/html; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This the <b>HTML</b> version!"));

//send mail
mail("en@mail.dk", "Overskrift", "$besked", $headers);
?>
Avatar billede kimg Nybegynder
19. januar 2007 - 20:05 #8
Fjern de 2 $besked du har sat ind
Avatar billede michaeltryl Seniormester
19. januar 2007 - 20:13 #9
så får jeg
Parse error: parse error, unexpected T_STRING in /home/www/demo.magiske-michael.dk/mail.php on line 24

det er denne linie
mail("en@mail.dk", "Overskrift", $besked, $headers);

jeg vil lige være sikker på at det rigtigt som jeg har indsat beskederne eller skal beskederne ind i de () hvor der står  This is the plain text version! og This the <b>HTML</b> version?
Avatar billede michaeltryl Seniormester
19. januar 2007 - 20:14 #10
i den linie hvor der er fejl har jeg også prøvet at skifte " ud med ' i stedet, men uden held
Avatar billede michaeltryl Seniormester
19. januar 2007 - 20:25 #11
nu sender den en mail,men beskeden ser mærkelig ud

jeg bruger dette
<?php
$headers .= "min@mail.dk\n";
$headers .= "MIME-Version: 1.0\r\n";
$boundary = uniqid("htmlMail");
$headers .= "Content-Type: multipart/alternative" . "; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message.\r\n\r\n";
$headers .= "X-Mailer: domæne.dk\r\n";

//tekst besked

$headers .= "--$boundary\r\n" .
  "Content-Type: text/plain; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This is the plain text version!"));

//html besked

$headers .= "--$boundary\r\n" .
  "Content-Type: text/html; charset=ISO-8859-1\r\n" .
  "Content-Transfer-Encoding: base64\r\n\r\n";
$headers .= chunk_split(base64_encode("This the <b>HTML</b> version!"));

//send mail
mail("en@mail.dk", "Overskrift", "", $headers);

echo"mail sendt";
?>

den mail jeg får har følgende indhold (modtaget med Outlook):
min@mail.dk
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary = htmlMail45b11a2f1a147

This is a MIME encoded message.

X-Mailer: domæne.dk
--htmlMail45b11a2f1a147
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: base64

VGhpcyBpcyB0aGUgcGxhaW4gdGV4dCB2ZXJzaW9uIQ==--htmlMail45b11a2f1a147
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: base64

VGhpcyB0aGUgPGI+SFRNTDwvYj4gdmVyc2lvbiE=
Avatar billede kimg Nybegynder
20. januar 2007 - 09:43 #12
Ret denne linie til dit domæne $headers .= "X-Mailer: domæne.dk\r\n";
Avatar billede michaeltryl Seniormester
20. januar 2007 - 13:20 #13
så ser mailen sådan ud jeg har prøvet både  med og uden www.
-------------------------------

min@mail.dk
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary = htmlMail45b207e713268

This is a MIME encoded message.

X-Mailer: magiske-michael.dk
--htmlMail45b207e713268
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: base64

VGhpcyBpcyB0aGUgcGxhaW4gdGV4dCB2ZXJzaW9uIQ==--htmlMail45b207e713268
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: base64

VGhpcyB0aGUgPGI+SFRNTDwvYj4gdmVyc2lvbiE=
Avatar billede michaeltryl Seniormester
22. januar 2007 - 03:05 #14
ved du hvor fejlen kan være?
Avatar billede kimg Nybegynder
22. januar 2007 - 10:19 #15
Nej, jeg har testet det selv, der virker det fint, har du evt. en mail adr. så kan jeg sende en test mail
Avatar billede michaeltryl Seniormester
22. januar 2007 - 12:53 #16
diverse a magiske - michael . dk
Avatar billede michaeltryl Seniormester
28. januar 2007 - 18:36 #17
har du sendt en test mail for jeg har ikke modtaget nogen?
Avatar billede michaeltryl Seniormester
01. februar 2007 - 23:13 #18
jeg lukker her og prøver måske at spørge igen senere hvis jeg ikke selv finder en løsning. vil du have del i point så kom med et svar
Avatar billede michaeltryl Seniormester
09. februar 2007 - 22:19 #19
lukker
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