Уникальная идентификация электронной почты при отправке с использованием System.Net.Mail - PullRequest
7 голосов
/ 03 июня 2011

Я ищу способ однозначно идентифицировать электронную почту во время ее отправки, используя класс .NET SmtpClient (в System.Net.Mail), т.е.

        SmtpClient client = new SmtpClient(smtpServer, smtpPort);

        client.EnableSsl = false;

        MailAddress from = new MailAddress(fromAddress);
        MailAddress to = new MailAddress(destinationAddress); 

        MailMessage message = new MailMessage(from, to);

        message.Body = body;
        message.Subject = subject;

и т.д.

Я могу установить свойство 'Message-Id', используя message.Headers (установите его в System.Guid), но оно перезаписывается сервером smtp, и я не знаю, как получить доступ к идентификатору сообщения, который генерирует сервер smtp ,

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

Кто-нибудь знает, возможно ли это?

Ответы [ 3 ]

8 голосов
/ 03 июня 2011

Один из вариантов - прикрепить к сообщению собственный заголовок. Пользовательские заголовки обозначаются префиксом X-. Поэтому в этом случае вы можете создать файл с именем X-Unique-Id, который не будет перезаписан.

Однако это не обязательно тот случай, когда все почтовые клиенты разрешат фильтрацию / поиск на основе пользовательских заголовков, вам придется проверить клиента.

За MSDN :

Любые добавленные пользовательские заголовки будут включается, когда экземпляр MailMessage отправлено.

Просто добавьте к сообщению. Коллекция заголовков, как:

message.Headers["X-Unique-Id"] = "1";

Другим вариантом может быть использование специального значения reply-to: или from:, которое включает идентификатор сообщения. Например. если ваш ответный адрес был auto@responder.net, измените его на auto+ndomunique-id‹@responder.net. Многие почтовые серверы (включая gmail) будут обрабатывать знак + как подстановочный знак и доставлять сообщение на auto@responder.net как обычно. Это распространенный подход, позволяющий пользователям отвечать непосредственно на сообщения в приложении по электронной почте.

4 голосов
/ 03 июня 2011

В зависимости от того, что вы подразумеваете под «клиентской системой», я бы предложил добавить заголовок клиента, например X-MyHeader: GUID.

X-Headers не взаимодействует с почтовыми серверами;Это также используется многими популярными почтовыми инструментами, например mailchimp:

System.Net.Mail.MailMessage m;
m.Headers.Add("X-MyHeader", Guid.NewGuid());
1 голос
/ 03 июня 2011

Можете ли вы прикрепить GUID к строке «Тема» или добавить его в конец письма?Он будет виден пользователю, но если он будет в нижней части электронного письма (возможно, с дополнительной информацией), он будет недоступен и все равно сделает поиск возможным.

...