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