Avatar billede sijmonj Nybegynder
17. november 2009 - 12:32 Der er 7 kommentarer og
1 løsning

PHP mail, udskriver html tags

Hej jeg har et problem, jeg har lavet et mail system som skal udsende nyhedsbreve, men problemet er at den udskriver html tags i emailen istedet for at gøre teksten fed osv.


her er min kode:


  1.  $msg = $_POST['msg'];
  2. $overskrift = $_POST['overskrift'];
  3. $kategori = $_POST['kategori'];
  4. htmlspecialchars($msg);
  5. htmlspecialchars($overskrift);
  6. htmlspecialchars($kategori);
  7.
  8.
  9. $query = mysql_query("SELECT * FROM nyhedsbrev WHERE kategori = '$kategori'") or die(mysql_error());
  10.
  11. $i = 0;
  12.
  13. while($data = mysql_fetch_array($query))
  14.
  15. {
  16.
  17. if($i != 0)
  18. $to .= ',';
  19. $to .= $data["email"];
  20. $i++;
  21.
  22. }
  23.
  24.
  25. #$headers = "MIME-Version: 1.0\r\n";
  26. //$headers
  27. //Standard for mails - optional
  28. //Nødvendigt for, at angive afsenderen.
  29.
  30. #$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //Angiver at mailens indhold er i HTML-format
  31.
  32. #$headers .= $from ."\r\n"; //Sætter afsender i mailens header
  33.
  34.
  35. $from = "firma navn";
  36. $subject = $overskrift;
  37. $message = $msg;
  38.
  39.
  40.
  41. mail($to, $subject, $message, $headers);
Avatar billede sijmonj Nybegynder
17. november 2009 - 12:35 #1
uden tal, og så rettet en smule i den, men virker stadig ikke i mail klienter men gmail virker fint og hotmail.com mail altså når det er via browseren viser den fed skrift osv. som den skal men ikke i mail programmer som outlook og windows live mail


$msg = $_POST['msg'];
$overskrift = $_POST['overskrift'];
$kategori = $_POST['kategori'];


   
    $query = mysql_query("SELECT * FROM nyhedsbrev WHERE kategori = '$kategori'") or die(mysql_error());
   
    $i = 0;
   
    while($data = mysql_fetch_array($query))
   
    {
   
        if($i != 0)
        $to .= ',';
        $to .= $data["email"];
        $i++;
   
    }
   
   
    $headers  = "MIME-Version: 1.0\r\n";   
                            //$headers
                            //Standard for mails - optional
                            //Nødvendigt for, at angive afsenderen.
                             
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //Angiver at mailens indhold er i HTML-format
                             
    $headers .= $from ."\r\n"; //Sætter afsender i mailens header
   
   
    $from = "firma navn";
    $subject = $overskrift;
    $message = $msg;



    mail($to, $subject, $message, $headers);
Avatar billede acore Ekspert
17. november 2009 - 13:11 #2
Mon ikke du skal dekode teksten i databasen - altså noget med:

$message = html_entity_decode($msg, ENT_QUOTES);

Det kommer selvfølgelig an på hvad du har gjort, da du gemte det i databsen - det kan jeg ikke se.
Avatar billede sijmonj Nybegynder
17. november 2009 - 13:31 #3
det bliver ikke gemt i min database, men har lige prøvet at gemme det og den gemmer det sådan her




<p>bla bla bla heheheh<br /><br /><br /><strong>fgfgdfgdf</strong></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: large;">fgfdgdgdfgdf</span></p>
<h1>fgfgfg</h1>


bruger tinyMCE som editor,

kan lige prøve din kode
Avatar billede acore Ekspert
17. november 2009 - 13:52 #4
Nej, det forstår jeg. Kan du ikke checke om fx "<" er blevet til "&lt;". I så fald vil mit forslag måske hjælpe alligevel.
Avatar billede sijmonj Nybegynder
17. november 2009 - 14:51 #5
det ser bare sådan her ud


<p>twtwte</p>
<p><br /><strong>asdasdasd</strong><br /><br /></p>
<h1>asdsadasdas</h1>
<p> </p>


og min kode nu:



$msg = $_POST['msg'];
    $overskrift = $_POST['overskrift'];
    $kategori = $_POST['kategori'];
    $message = html_entity_decode($msg, ENT_QUOTES);

print_r($message);

mysql_query("insert into mail_test (msg) VALUES ('$message')");



   
    $query = mysql_query("SELECT * FROM nyhedsbrev WHERE kategori = '$kategori'") or die(mysql_error());
   
    $i = 0;
   
    while($data = mysql_fetch_array($query))
   
    {
   
        if($i != 0)
        $to .= ',';
        $to .= $data["email"];
        $i++;
   
    }
   
   
    $headers  = "MIME-Version: 1.0\r\n";   
                            //$headers
                            //Standard for mails - optional
                            //Nødvendigt for, at angive afsenderen.
                           
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //Angiver at mailens indhold er i HTML-format
                           
   
   
   
    $from = "firma";
    $headers .= $from ."\r\n"; //Sætter afsender i mailens header
    $subject = $overskrift;
    $message = $msg;



    mail($to, $subject, $message, $headers);
Avatar billede sijmonj Nybegynder
25. december 2009 - 22:30 #6
smid svar en af jer
Avatar billede sijmonj Nybegynder
07. juni 2010 - 14:31 #7
lukker selv så
Avatar billede sijmonj Nybegynder
07. juni 2010 - 14:31 #8
..
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