以 HTML 格式发送电子邮件 [重复]
Posted
技术标签:
【中文标题】以 HTML 格式发送电子邮件 [重复]【英文标题】:Sending email in HTML [duplicate] 【发布时间】:2015-08-04 20:02:30 【问题描述】:我正在为我们的客户设置一个确认电子邮件脚本,以便在他们完成在线表格时收到一封电子邮件。我上传了我的脚本并进行了测试,但我收到了一封只有原始 html 的电子邮件。我一直在看一些试图做到这一点的教程。我验证了我的 HTML 并通过了所有测试。是否必须在我的 php 中包含一些内容才能将我的正文字符串解释为 HTML?
这是我的脚本
<?php
//Script for sending a confirmation email
$body = "<!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>Demystifying Email Design</title>
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"/>
</head>
<body style=\"margin: 0; padding: 0; background-color: #ecf0f1;\">
<table cellpadding=\"0\" cellspacing=\"0\" width=\"60%\" align=\"center\" style=\"border: 1px solid #bdc3c7;\">
<tr bgcolor=\"#3498db\">
<td align=\"center\">
<img alt=\"Logo\" src=\"http://www.****.com/logo-lg.jpg\" style=\"width: 50%; height: auto; padding-top: 5%; padding-bottom: 5%;\" />
</td>
</tr>
<tr bgcolor=\"#ffffff\" align=\"center\">
<td>
<h3 style=\"padding-top: 5%; padding-bottom: 5%;\">Worldwide innovator in flexible liquid packaging</h3>
</td>
</tr>
<tr align=\"center\" bgcolor=\"#ffffff\">
<td>
<h4 style=\"padding-top: 5%; padding-bottom: 5%;\">Thank you for contacting customer service. We've received your sample request; one of our team members will be in contact with you in the very near future. Thanks again for your time and interest.</h4>
</td>
</tr>
</table>
</body>
</html>";
$to = "*******@****.com";
$subject = "Thanks for Reaching out";
if (mail($to,$subject,$body))
echo "Mail was sent";
else
echo "Failed";
这是我收到的电子邮件
【问题讨论】:
您是否在标题中指定了内容类型?检查css-tricks.com/sending-nice-html-email-with-php 与论坛网站不同,我们不使用“谢谢”、“感谢任何帮助”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?。顺便说一句,这是“提前致谢”,而不是“在先致谢”。 我为糟糕的语法道歉并说谢谢。 【参考方案1】:您还需要设置一个标头,表明这是 HTML,例如
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";
mail($to, $subject, $message, $headers);
Source(参见示例 3)。
【讨论】:
实际和官方手册也有一些很好的例子php.net/manual/en/function.mail.php ;-) 非常感谢!我必须通过并更改一些 HTML 才能正确呈现。再次感谢!【参考方案2】:正确的代码是:
$to = "*******@****.com";
$subject = "Thanks for Reaching out";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
if (mail($to,$subject,$body,$headers))
echo "Mail was sent";
【讨论】:
以上是关于以 HTML 格式发送电子邮件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
django 使用 django-registration 以 html 格式发送电子邮件
python 使用嵌入的附件和图像以HTML格式发送电子邮件。