是否可以捕获使用SmtpClient发送的电子邮件的“消息ID”?
使用.NET中的SmtpClient
和MailMessage
类通过本地邮件服务器( hMailServer )发送电子邮件,我当前发现无法获取已发送邮件的Message-ID
标头值。
背后的想法
我正在尝试以编程方式跟踪无法传递的邮件,因此我必须找到一种方法来识别来自目标SMTP服务器的拒绝某个邮件的回复。
现在我想到只记住Message-ID
SMTP标头值并解析此ID的传入邮件。
我在发送邮件后尝试检查Headers
集合 ,但是我没有找到任何Message-ID
。
我的问题
是否可以获取我的SMTP服务器在发送MailMessage
实例期间添加的Message-ID
标头值?
更新2012-05-27
根据这个例子,我在发送之前已成功尝试自己手动生成Message-ID
。
到目前为止,我的所有示例都有效,所以这似乎是我的问题的解决方案。
您的问题的标准解决方案是VERP。 阅读伯恩斯坦的原始文章,找出为什么Message-Id
等。 不可靠。 http://cr.yp.to/proto/verp.txt
您可以在发送电子邮件之前添加自己的消息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已发送。