Reputation: 2123
I have written this PHP script to send a HTML email. However the email output is appearing as raw text and not being interpreted as html.
<?php
if(isset($_POST['submit'])) {
$to = $_POST['email'];
$from = "[email protected]";
$subject = "subject";
$message = "<div style=\"background:red;height:100px; " .
"width:100px;display:block;\">dfsdf</div>";
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
$headers .= "From: $from\r\n";
mail($to, $subject, $message, $headers);
echo "Message has been sent....!";
}else{
echo "Add an email address";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="/send" method="post">
<input name="email" type="text" />
<input name="submit" type="submit" value="Submit">
</form>
</body>
</html>
The email I get is:
<div style="background:red;height:100px;width:100px;display:block;">dfsdf</div>
I expect to be getting a red box. What am I doing wrong?
Upvotes: 1
Views: 12330
Reputation: 2288
Try changing the email headers: content-type
and charset
like this:
$headers = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=iso-8859-1rn";
to
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
Upvotes: 2
Reputation: 1170
$mail_to=$tomail;
$mail_from=$frommail;
$mail_sub="Subject";
$mail_mesg="Body of your Message";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "From: $frommail\r\n";
if(mail($mail_to,$mail_sub,$mail_mesg,$headers))
$result = "send successfully";
else
$result = "failed to send mail";
Upvotes: 1
Reputation: 5196
You have to use $headers .= "Content-type: text/html; charset=iso-8859-1". "\r\n";
and $headers = "MIME-Version: 1.0\r\n";
instead of
$headers .= "Content-type: text/html; charset=iso-8859-1rn"; $headers = "MIME-Version: 1.0rn";
So try this
<?php
if(isset($_POST['submit'])) {
$to = $_POST['email'];
$from = "[email protected]";
$subject = "subject";
$message = "<div style=\"background:red;height:100px;width:100px;display:block;\">dfsdf</div>";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1". "\r\n";
$headers .= "From: $from\r\n";
mail($to, $subject, $message, $headers);
echo "Message has been sent....!";
}else{
echo "Add an email address";
}?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="/send" method="post">
<input name="email" type="text" />
<input name="submit" type="submit" value="Submit">
</form>
</body>
</html>
Upvotes: 0
Reputation: 7639
Here's what works for me:
$mailheaders = "From: $email\n";
$mailheaders .= "Reply-to: $email\n";
$mailheaders .= "Content-Type: text/html; charset=iso-8859-1\n";
mail('[email protected]', 'Test', 'Foo bar', $mailheaders);
Upvotes: 0