发送 HTML 电子邮件时出现“引用的可打印行长度超过 76 个字符”警告

"Quoted-printable line longer than 76 chars" warning when sending HTML E-Mail

提问人:Chris Roberts 提问时间:9/12/2008 更新时间:3/15/2010 访问量:7564

问:

我在 VB.NET 应用程序中编写了一些代码来发送 HTML 电子邮件(在本例中为丢失密码提醒)。

当我测试电子邮件时,它被我的垃圾邮件过滤器吃掉了。它得分低的原因之一是因为以下问题:

MIME_QP_LONG_LINE  RAW: Quoted-printable line longer than 76 chars

我已经浏览了电子邮件的来源,并且已将长度超过 76 个字符的每一行分成两行,中间带有 CR+LF,但这并没有解决问题。

谁能给我指出正确的方向?

谢谢!

.NET HTML 电子邮件

评论

0赞 Eric Z Beard 9/12/2008
Quoted-printable 是一种编码,而不仅仅是行长。您必须通过编码过滤器运行整个消息,以修改行长度并将某些字符转换为转义码。
0赞 Biri 9/12/2008
您如何尝试发送电子邮件?如果您创建一个 MailMessage 对象 (via ),它甚至具有该属性,并且它负责所有格式设置和所有内容。System.Net.MailIsBodyHtml
0赞 Chris Roberts 9/12/2008
@Biri 是的 - 我正在使用 <code>MailMessage</code> 对象,并且已将 <code>IsBodyHtml</code> 设置为 true。当我从垃圾邮件过滤器中将发送地址列入白名单时,邮件可以正常工作(并显示)。只是由于这个“错误”,垃圾邮件过滤器将我标记为失败。还有其他想法吗?我热衷于尽我所能提高电子邮件的垃圾邮件分数,以便它有更多机会为我的应用程序用户工作。
0赞 VolkerK 9/12/2008
你为什么要“手动”拆分文本?<br /> 不是专家,但我会研究<msdn.microsoft.com/en-us/library/......>和<msdn.microsoft.com/en-us/library/......>并使用 AlternateView。

答:

5赞 pilif 9/12/2008 #1

Quoted printable 将 8 位字符扩展为“={HEX-Code}”,从而使消息更长。也许你刚刚达到这个极限?

您是否尝试过将消息分解为 70 个字符?这应该为每行几个字符提供空间。

或者您只需使用 Base64 对电子邮件进行编码 - 所有邮件客户端都可以处理。

或者您只需将 Content-Transfer-Encoding 设置为 8 位并发送未编码的数据。据我所知,这些天没有邮件服务器无法处理 8 位字节。

2赞 kymg 3/15/2010 #2

这是 System.Net.Mail.MailMessage 中 Quoted-Printable 编码实现中的一个错误,该错误已经存在很长时间,但显然现在已经修复,从 .Net 4 Beta 2 开始。

http://connect.microsoft.com/VisualStudio/feedback/details/156052/mailmessage-body-encoding-quoted-printable-violates-rfcs-soft-line-breaks-requirements

一种解决方法是改用 Base64 编码(即使以这样的非人类可读编码发送纯文本 MIME 部分并不是一个好习惯)。要求类的用户在发送消息之前手动拆分消息行并不是一个通用的解决方案,因为修改后的消息不是他们想要发送的消息(例如,它可能包含一个长度超过 76 个字符的链接,因此无法拆分)。Quoted-Printable 可以在编码处理行长超过 76 个字符的消息,只要正确实现即可。