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

时间:2008-09-12 10:31:36

标签: .net html email

我在我的VB.NET应用程序中编写了一些代码来发送HTML电子邮件(在这种情况下,丢失了密码提醒)。

当我测试电子邮件时,它会被我的垃圾邮件过滤器吃掉。它得分严重的一个原因是由于以下问题:

MIME_QP_LONG_LINE  RAW: Quoted-printable line longer than 76 chars

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

有人能指出我正确的方向吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

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

你试过打破70个字符的消息吗?这应该为每行提供几个字符的空间。

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

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

答案 1 :(得分: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个字符的行的消息,只要它被正确实现。