Можно ли захватить "Message-ID" сообщения электронной почты, отправленного с помощью SmtpClient?

С помощью SmtpClient и MailMessage классы в .NET для отправки писем через локальный почтовый сервер (hMailServer), в настоящее время я не нашел способ получить Message-ID значение заголовка отправленного сообщения.

идея

Я пытаюсь программно отслеживать сообщения, которые не доставляются, поэтому я должен найти способ идентифицировать ответы с целевого SMTP-сервера, который отклоняет определенный сообщение.

теперь я думал просто вспомнить Message-ID значение заголовка SMTP и анализ входящих писем для этого идентификатора.

Я попытался проверить Headers коллекция после отправки сообщения, но я не нашел ни одного Message-ID.

у меня вопрос

можно ли получить Message-ID значение заголовка, которое мой SMTP-сервер добавляет во время отправки MailMessage экземпляр?

обновление 2012-05-27

по состоянию на я успешно попытался вручную создать Message-ID самостоятельно, непосредственно перед отправкой.

все мои примеры работают до сих пор, так что это кажется что это решение моего вопроса.

2 ответов


стандартным решением вашей проблемы является VERP. Прочитайте оригинальную статью Бернштейна, чтобы узнать, почему Message-Id et al. не надежны. http://cr.yp.to/proto/verp.txt


вы можете добавить свой собственный идентификатор сообщения перед отправкой электронной почты. Я использую следующий код:

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 свойство, и есть идентификатор сообщения отправлено.