发送HTML电子邮件时出现"带引号的可打印行长于76个字符"的警告

时间:2020-03-05 18:52:06  来源:igfitidea点击:

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

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

MIME_QP_LONG_LINE  RAW: Quoted-printable line longer than 76 chars

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

谁能指出我正确的方向?

谢谢!

解决方案

回答

带引号的可打印内容将8位字符扩展为" = {HEX-Code}",从而使消息更长。也许我们刚刚达到此极限?

我们是否尝试过以70个字符为单位来分解消息?那应该为每行提供几个字符的空间。

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

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

回答

这是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个字符的行的消息。