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