从网站的电子邮件有时空白或乱码

我们公司有一个基于osCommerce的在线商店网站。 系统使用PHP的mail()函数发送各种原因的电子邮件,如密码更改,订单确认等。

我们偶尔有客户报告他们收到的电子邮件是空白的(电子邮件是纯文本格式)或乱码(电子邮件是HTML格式)。 在后一种情况下,它实际上只是作为原始文本显示的HTML,但客户当然不能阅读它。 在这种情况下,第一个开始标签的< ,有时还有几个字符丢失了。

为了确定这种情况是否发生在某些客户或电子邮件系统上,我configuration了网站,在每个消息的CC末尾发送一个CC消息给服务帐户。 这些CC消息始终完好无损,并在Outlook中正确显示。 对于它的价值,Hotmail用户似乎更频繁地发生一些事情,但当然不限于此。

由于该网站在共享的(Debian)主机上,因此从这方面debugging事情的宝贵的一点,虽然如果我做出了正确的要求,我觉得托pipe公司的员工会帮助我,即使他们有限的资源在这样的事情上。

有什么我可以做什么来尝试确定为什么这些电子邮件没有被某些客户正确接收的build议,但一个CC副本到达就好了?

更新

因为我不再在那个公司工作,我就没有机会去testing任何新的想法。 如果您对这个问题有任何的想法,那么一定要把它们发布给其他可能遇到类似问题的人,但是我不能接受这个问题的答案。

Outlook对格式错误非常宽容,并且非常善于介绍它们。 尝试将它们交给商店,在那里你可以看到他们的原始格式。 服务器上的本地邮箱或Maildir存储将是理想的。

ContentHeaders可以被桌面客户端和networking邮件客户端检查。 不要假设,因为它是webmail它支持HTML。 由于HTML的安全问题,几个Webmail应用程序默认为文本模式。

理想情况下,您应该生成一个包含文本和HTML格式的多部分MIME。 这是最灵活的select。 正确完成它应该显示无处不在。

这可能是因为他们的电子邮件客户端不会自动获取它是HTML。 您可以明确地将ContentHeaders HTML (我不记得确切的拼写)添加到生成的电子邮件的标题中。