我正在使用System.Net.Mail.SmtpClient
通过远程SMTP服务器发送电子邮件。当我查看已发送消息的标题时,我看到该消息从X-Spam获得2.5次点击。如何防止From
字段的base64编码,以及如何摆脱NULL_IN_BODY
命中?虽然它没有被标记为垃圾邮件,但我希望它是完美的。我无法找到有关此问题的任何信息(如果它确实是一个问题)。
MIME-Version: 1.0
From: Myself <no-reply@myself.com>
To: me@myself.com
Date: 25 Mar 2011 15:20:23 +0100
Subject: Test subject
Content-Type: text/plain; charset=us-ascii
X-Spam-Status: No, hits=0.5 required=5.0
X-Spam-Report: 0.5 hits, 5.0 required;
* -0.5 ALL_TRUSTED Passed through trusted hosts only via SMTP
* 1.0 NULL_IN_BODY FULL: Message has NUL (ASCII 0) byte in message
X-Virus-Scanned: by moam (http://www.moam.net/)
X-Moam-Version: 0.95
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by mx02.example.com id p2PEKKNs014451
Hello, sshow!
Below is your login information
Username: sshow
Password: a8sJdfl
Sent from http://me.myself.com
修改:我设法通过删除该字段的所有编码来删除FROM_EXCESS_BASE64
的警告,这是最重要的警告。之前我曾为该字段手动设置Encoding.UTF8
。
通过从body
字符串中删除所有控制字符,它不再引发警告。但是,这也会删除换行符。
foreach (char c in body)
{
stringBuilder.Append(Char.IsControl(c) ? ' ' : c);
}
编辑:删除除换行符之外的所有控件字符时,警告会返回!
foreach (char c in body)
{
stringBuilder.Append(Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c);
}
答案 0 :(得分:1)
如果没有看到电子邮件的正文或源代码,就无法确定,但我认为以下情况属实:
如果这不能解决问题,请发布您的完整代码和整个邮件的十六进制转储。
更新:
Char.IsControl也会删除CR和LF字符(&#39; \ r&#39;和&#39; \ n&#39;)。将代码更改为不删除它们,例如:
Char.IsControl(c) && c != '\r' && c != '\n' ? ' ' : c