【发布时间】:2011-03-27 20:08:26
【问题描述】:
我正在使用 PHP 原生 mail() 函数发送 HTML 电子邮件,但在用户最常见的电子邮件客户端 - Outlook 2007 中存在格式问题(除了一些其他电子邮件clients) - 所有的 html 标签都被暴露出来,所以对于非 web 开发者来说,这看起来像是胡言乱语。
我发送 HTML 电子邮件的方式与 PHP manual 演示它的方式相同。示例:
$message = get_HTML_email_with_valid_formatting();
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$headers .= "From: example.com <info@example.com>\r\n";
$headers .= "Reply-To: donotreply@example.com\r\n";
mail('me@example.com', 'test', $message, $headers);
因为测试各种电子邮件客户端很困难,所以我注册了http://litmusapp.com/,因此我可以看到 47 个不同电子邮件客户端中的电子邮件截图。大多数都可以(例如 gmail、thunderbird、Lotus Notes),但所有不同版本的 Outlook 都不好。
为了解决格式问题,我做了以下操作:
- 删除
$headers = "MIME-Version: 1.0\r\n";邮件标头。 - 确保我只以“
\n”而不是“\r\n”结束我的标题。
有谁知道为什么我在不符合手册的情况下使用 HTML 电子邮件会获得更好的结果?
信息:
- 我在 RHEL 5.5 上使用 postfix 版本 2.3.3。
- PHP 版本 5.3.2
【问题讨论】:
-
“我正在使用 PHP 本机 mail() 函数来发送 HTML 电子邮件” - 嗯,这是你的问题* ;-) 你有没有考虑过使用类似的东西,例如swiftmailer.org ? | * 也许不是mail()函数本身,而是mail()、一些字符串连接&试图同时解决协议和应用程序级问题的组合。
标签: php mime postfix-mta html-email email-formats