I am trying to send an html email with PHP and it keeps coming just as text. All of the values are generated correctly from the php it is just text in the email. Here is the code:
$to='xxxxxxx@xxxxxxx.com';
$from = 'xxxxxxx@xxxxxxxx.com';
$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);
You overwrite the header on the last of the three lines:
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers = "From: $from \r\n";
Should be (note the dot):
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: $from \r\n";
"\r\n"
is absolutely correct, see as well Which line break in php mail header, \r\n or \n? - hakre 2012-04-05 15:43