7

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

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

MIME_QP_LONG_LINE RAW:带引号的可打印行超过 76 个字符

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

谁能指出我正确的方向?

谢谢!

4

2 回答 2

5

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

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

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

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

于 2008-09-12T10:52:52.777 回答
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 个字符的消息。

于 2010-03-15T12:02:41.230 回答