这是我在App.Config中的SMTP设置:
<system.net>
<mailSettings>
<smtp from="Reminder <reminder@myserver.com>">
<network host="mail.myserver.net" port="587" password="my password" userName="reminder@myserver.com" enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
这就是我发送电子邮件的方式:
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
smtpClient.Send(message);
这是有效的!但唯一的问题是,我的电子邮件将转到垃圾邮件文件夹,这是因为他们的标题中缺少Message-Id。我在Thunderbird中使用相同的帐户,当我使用thunderbird发送电子邮件时,Message-Id被添加到我的电子邮件中,但是从我的应用程序发送的电子邮件不会发生。
我可以手动添加标题,例如:
message.Headers.Add("Message-Id","<3BD50098E401463AA228377848493927-1>");
但是此ID不是有效的邮件ID,我仍然会得到负面垃圾邮件分数。 知道为什么会这样吗?
这就是我在Thunderbird中所拥有的:
主持人:mail.korax.net /
验证:普通密码/
港口:587 /
安全:STARTTLS
答案 0 :(得分:13)
请在这里看到这篇文章:
http://jarrett.co/post/1638578964/spamassassin-vs-system-net-mail
我遇到了同样的问题。 System.Net.Mail
不会自动附加Message-Id。但你可以这样:
mailMessage.Headers.Add("Message-Id",
String.Format("<{0}@{1}>",
Guid.NewGuid().ToString(),
"mail.example.com"));
答案 1 :(得分:9)
您的SMTP服务器必须配置为自动包含邮件ID。如果要生成自己的ID,则应遵循RFC 2822 Section 3.6.4。