2012-08-16 14 views
7

Utilizzo di php e con questo codice ricevo l'e-mail come testo in chiaro, mi sono perso qualcosa? come ho bisogno di inviare e-mail formattate che potrebbero contenere collegamenti per esempio.Formato PHP html di posta non funzionante

$to = "[email protected]"; 
$subject = "Password Recovery"; 

$body = ' 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
     <title>Birthday Reminders for August</title> 
    </head> 
    <body> 
     <p>Here are the birthdays upcoming in August!</p> 
     <table> 
      <tr> 
       <th>Person</th><th>Day</th><th>Month</th><th>Year</th> 
      </tr> 
      <tr> 
       <td>Joe</td><td>3rd</td><td>August</td><td>1970</td> 
      </tr> 
      <tr> 
       <td>Sally</td><td>17th</td><td>August</td><td>1973</td> 
      </tr> 
     </table> 
    </body> 
</html> 
'; 

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers = "From: [email protected]\r\n"."X-Mailer: php"; 
if (mail($to, $subject, $body, $headers)) 
echo "Password recovery instructions been sent to your email<br>"; 

risposta

10

Guarda questo esempio, questo è sufficiente per inviare mail in php:

<?php 
    //change this to your email. 
    $to = "[email protected]"; 
    $from = "[email protected]"; 
    $subject = "Hello! This is HTML email"; 

    //begin of HTML message 
    $message =" 
<html> 
    <body> 
    <p style=\"text-align:center;height:100px;background-color:#abc;border:1px solid #456;border-radius:3px;padding:10px;\"> 
     <b>I am receiving HTML email</b> 
     <br/><br/><br/><a style=\"text-decoration:none;color:#246;\" href=\"www.example.com\">example</a> 
    </p> 
    <br/><br/>Now you Can send HTML Email 
    </body> 
</html>"; 
    //end of message 
    $headers = "From: $from\r\n"; 
    $headers .= "Content-type: text/html\r\n"; 

    //options to send to cc+bcc 
    //$headers .= "Cc: [email][email protected][/email]"; 
    //$headers .= "Bcc: [email][email protected][/email]"; 

    // now lets send the email. 
    mail($to, $subject, $message, $headers); 

    echo "Message has been sent....!"; 
?> 
+3

Si prega di contrassegnarlo come risposta o in eccesso "se è corretto". – GLES

18

Hai re-impostare le intestazioni:

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers = "From: [email protected]\r\n"."X-Mailer: php"; 

Stai perdendo un punto in quella ultima riga, che è sovra-scrittura dei due precedenti:

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= "From: [email protected]\r\n"."X-Mailer: php"; 
+0

... Buona cattura ... – j08691

+0

@andrewsi grazie Avevo anche un problema simile a quello mancante. – Muk

2

Ho riscontrato lo stesso problema con uno specifico server di posta, nel mio caso la soluzione era impostare "\ n" invece di "\ r \ n" come fine riga per le intestazioni.

Problemi correlati