7

使用 .NET 中的SmtpClientMailMessage通过本地邮件服务器 ( hMailServer ) 发送电子邮件,我目前发现无法获取已Message-ID发送消息的标头值。

背后的想法

我正在尝试以编程方式跟踪无法投递的邮件,因此我必须找到一种方法来识别来自拒绝特定邮件的目标 SMTP 服务器的回复。

现在我想简单地记住Message-IDSMTP 标头值并解析此 ID 的传入邮件。

发送消息后,我尝试检查Headers集合,但没有找到任何Message-ID.

我的问题

是否可以获得Message-ID我的 SMTP 服务器在发送MailMessage实例期间添加的标头值?

2012-05-27 更新

根据此示例,我已成功尝试Message-ID在发送之前自行手动生成一个。

到目前为止,我所有的例子都有效,所以这似乎是我问题的解决方案。

4

3 回答 3

5

您可以在发送电子邮件之前添加自己的消息 ID。我使用下一个代码:

Guid id = Guid.NewGuid(); //Save the id in your database 
mensajeEmail.Headers.Add("Message-Id", String.Format("<{0}@{1}>",id.ToString(),"mail.example.com"));

注意:对于我使用OpenPop.Net的下载消息,我检查了message.Headers.InReplyTo属性,并且发送了消息 ID。

于 2015-07-03T16:26:13.187 回答
2

您问题的标准解决方案是 VERP。阅读 Bernstein 的原始文章以了解原因Message-Id等。不可靠。http://cr.yp.to/proto/verp.txt

于 2012-05-27T20:35:45.383 回答
2

我正在为 .Net 和 SMTP 客户端使用 MailKit 库。

我尝试了另一种解决方案来获取使用 SMTP 客户端发送的消息的 ID,以跟踪任何回复的消息。

在发送消息之前,将隐藏的 ID 属性添加到消息标题中,

检查这个样本

现在继续并发送您的消息,等待大约 10 秒,然后您将使用IMAP客户端获取您的已发送文件夹,并且对于您文件夹中的每条消息,循环遍历消息标题并检查其中是否有人是 == messageIdentity,现在你抓住了您已成功发送消息并获取有关它的任何信息,例如 ID 等...

于 2019-07-10T08:44:13.317 回答