2012-04-05 8 views
0

Ich versuche, eine HTML-E-Mail mit PHP zu senden und es kommt immer nur als Text. Alle Werte werden korrekt aus dem PHP generiert, es ist nur Text in der E-Mail. Hier ist der Code:Senden von HTML-E-Mail mit PHP

$to='[email protected]'; 
    $from = '[email protected]'; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $headers = "From: $from \r\n"; 
    $subject = "Print Run: " . $run . " is ordered"; 
    $body ="<html> 
      <head> 
      </head> 
      <body> 
      <table> 
       <tr> 
        <th>Company</th> 
        <th>Quantity</th> 
        <th>Size</th> 
        <th>Date Added</th> 
        <th> 
        </th> 
       </tr>"; 
      for($i = 0; $i < $arraySize; $i++){  
       $body .= "<tr><td>" . $companyName[$i] . "</td><td>" . $quantity[$i] . "</td><td>" . $cardSize[$i] . "</td><td>" . $dateAdded[$i] . "</td></tr>"; 
      } 
      $body .= "<tr> 
         <td style=\"font-weight:bold; border-style:solid; border-top-width:1px;\">Totals</td> 
         <td style=\"font-weight:bold; border-style:solid; border-top-width:1px;\">" . $totals . "</td> 
         <td></td> 
         <td></td> 
         <td></td> 
         </tr> 
         </table> 
         </body> 
         </html>"; 

    mail($to,"Print Run: " . $run . " is ordered",$body,$headers); 
+0

haben Sie überprüfen, ob es nicht durch Ihre E-Mail-Client-Einstellungen verursacht? – mishu

Antwort

11

überschreiben Sie den Header auf der letzten der drei Linien:

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers = "From: $from \r\n"; 

Sollte sein (man beachte den Punkt):

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= "From: $from \r\n"; 
+9

+1 für ein Adlerauge. –

+0

War nicht so schwer, es wirklich zu entdecken :) –

+0

Ein anderes Gotcha, das ich gesehen habe, ist das "\ r \ n". Dies wird auf einigen Systemen fehlschlagen und sollte durch PHP_EOL ersetzt werden. –