【问题标题】:Why is Outlook email changing my email into attachment with .dat extension?为什么 Outlook 电子邮件将我的电子邮件更改为带有 .dat 扩展名的附件?
【发布时间】:2020-10-12 09:50:59
【问题描述】:

我正在使用 HTML 内容类型的 PHP mail() 函数发送一封简单的电子邮件。它在每封电子邮件上都可以正常工作,除了 Outlook,我的邮件的全部内容都被传输到带有 .dat 扩展名的附件中。为什么会这样?有没有办法修复它或解决方法?

我在任何地方都没有找到解释,为什么会在如此简单的情况下发生。 (Outlook 设置设置为打开电子邮件,因为从其他网站发送的 HTML 和 HTML 电子邮件看起来也不错)

mail('myMail@gmail.com', "Testing", "First line<br>Second line <b>bolded text</b>", "From: myWebsite@mail.com\nContent-Type:".' text/html;charset="UTF-8"'."\nContent-Transfer-Encoding: 8bit");

【问题讨论】:

    标签: php html email


    【解决方案1】:

    请注意“额外的标头应该用 CRLF (\r\n) 分隔”c.f. https://www.php.net/manual/en/function.mail.php

    尝试添加 MIME 标志,看看它是否适合您:

    $headers = "From: myWebsite@mail.com \r\n".
               "Content-type: text/html; charset=UTF-8 \r\n".
               "Content-Transfer-Encoding: 8bit \r\n".
               "MIME-Version: 1.0";
        
    mail('myMail@gmail.com', "Testing", "First line<br>Second line <b>bolded text</b>", $headers);
    

    【讨论】:

    • 顺便说一句,即使使用未更改的原始代码,我也无法在 Windows 上使用 Outlook 2016 Pro 重现您的问题,其中邮件是从 Linux 机器发送的。因此,如果使用/r/n 并添加MIME-Version 没有帮助,您可能需要检查运行PHP 的外发邮件服务器的设置。如果您让我们知道您的环境是什么,它还将帮助您在此处获得更好的建议和答案。例如你的服务器是 Linux 还是 Windows;您正在运行什么版本的 PHP;什么版本的 Outlook;等等
    • 我之前删除了 "\r",因为我在想,这个答案可以以某种方式帮助我:stackoverflow.com/questions/387229/… 但实际上并没有。现在我按照你说的做了,一切正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    相关资源
    最近更新 更多