为什么.NET SmtpClient发送的电子邮件缺少Message-Id?

Toh*_*hid 11 .net c# asp.net

这是我在App.Config中的SMTP设置:

<system.net>
    <mailSettings>
      <smtp from="Reminder &lt;reminder@myserver.com&gt;">
        <network host="mail.myserver.net" port="587" password="my password" userName="reminder@myserver.com" enableSsl="true"/>
      </smtp>
    </mailSettings>
  </system.net>
Run Code Online (Sandbox Code Playgroud)

这就是我发送电子邮件的方式:

message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
smtpClient.Send(message);
Run Code Online (Sandbox Code Playgroud)

这是有效的!但唯一的问题是,我的电子邮件将转到垃圾邮件文件夹,这是因为他们的标题中缺少Message-Id.我在Thunderbird中使用相同的帐户,当我使用thunderbird发送电子邮件时,Message-Id被添加到我的电子邮件中,但是从我的应用程序发送的电子邮件不会发生.

我可以手动添加标题,例如:

message.Headers.Add("Message-Id","<3BD50098E401463AA228377848493927-1>");
Run Code Online (Sandbox Code Playgroud)

但是这个Id不是有效的消息ID,我仍然会得到负面的垃圾邮件分数.知道为什么会这样吗?

这就是我在Thunderbird中所拥有的:
host:mail.korax.net/
authentication:普通密码/
端口:587/
security:STARTTLS

Joh*_*ohn 14

请在这里看到这篇文章:

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"));
Run Code Online (Sandbox Code Playgroud)


Mar*_*ade 9

您的SMTP服务器必须配置为自动包含消息ID.如果生成自己的ID,则应遵循RFC 2822第3.6.4节.