发送文本和 HTML 电子邮件 - 为啥 Gmail 总是选择文本版本?

Posted

技术标签:

【中文标题】发送文本和 HTML 电子邮件 - 为啥 Gmail 总是选择文本版本?【英文标题】:Sending Text and HTML Emails - Why is Gmail Always Picking Text Version?发送文本和 HTML 电子邮件 - 为什么 Gmail 总是选择文本版本? 【发布时间】:2011-10-30 05:55:16 【问题描述】:

我正在使用ActionMailer.NET 从我的 ASP.NET MVC 应用程序发送一些电子邮件。

现在,此过程的一部分是发送消息的 html 文本版本,以支持纯文本客户端。

但我看到的是,GMail总是选择文本版本。

我试过 Yahoo,Yahoo 正确选择了 HTML 版本。

我尝试将我的 HTML 简化为一个 <h1> 和一个 <span> 标记,而 GMail 仍然选择文本版本,这意味着 HTML 的内容没有问题。

这是预期的行为吗?

因为当我只发送 HTML 版本时,GMail 会正确显示 HTML 版本。

我在 HTML 中设置元标记如下:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

有没有其他人遇到过这种行为并找到了解决方案?

因为目前的情况,我可能必须只发送 HTML 版本,以便 GMail 呈现它,因为我们有太多的客户使用 GMail。

这是我尝试发送的基本 HTML 示例:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title></title>
    </head>
    <body>
        <h1>This is the heading</h1>
        <span>This is some text.</span>
    </body>
</html>

GMail 甚至不允许这样做。

【问题讨论】:

【参考方案1】:

大多数基于 Web 的客户端和桌面电子邮件客户端会忽略电子邮件的 &lt;head&gt; 标记中的任何内容。

要同时发送 html 和文本版本,您需要正确构建邮件消息 - 有两个 mime 块。

向我们展示您用于构建电子邮件的完整代码。

【讨论】:

这一切都在 ActionMailer.NET 内置代码中,所以我没有设置任何标题等。我只是好奇为什么 Yahoo 可以工作,Gmail 没有。相同的消息。 在构建 MailMessage 对象时,使用 MailMessage.AlternateViews 属性:msdn.microsoft.com/en-us/library/… 没关系,我发现了问题,请参阅上面的答案。无论如何感谢您的帮助 (+1)【参考方案2】:

我想我应该首先检查的是 ActionMailer.NET 问题。

我做了一些谷歌搜索,但没有出现。

此问题已于 2 天前修复,因此获取最新软件包即可解决此问题。

https://bitbucket.org/swaj/actionmailer.net/issue/23/multipart-mail-problem

这个问题实际上与 Thunderbird 有关,但猜测 GMail 有类似的方式来处理多部分电子邮件。

问题解决了!

【讨论】:

以上是关于发送文本和 HTML 电子邮件 - 为啥 Gmail 总是选择文本版本?的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 Flask Mail 发送的文本附件是空的?

为啥 Outlook 不使用 text/plain 部分?

通过 SMTP 发送带有附件、纯文本/文本和文本/html 的电子邮件

发送带有内嵌图像的电子邮件

如何通过 Celery 发送 HTML 电子邮件?它不断发送文本/纯文本

gmail邮件服务器无法发送邮件