以 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 格式发送电子邮件

什么是“HTML格式发送邮件”?

python 使用嵌入的附件和图像以HTML格式发送电子邮件。

Word邮件合并不能发送HTML格式以及怎么带附件?

如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)

使用 HTML 发送邮件 [重复]