Вопрос по .net, c#, smtp – Можно ли зафиксировать «Message-ID» сообщения электронной почты, отправленного с помощью SmtpClient?

6

ИспользуяSmtpClient а такжеMailMessage классы в .NET для отправки электронной почты через локальный почтовый сервер HMailServer), В настоящее время я не нашел способа получитьMessage-ID значение заголовка отправленного сообщения.

Идея, стоящая за

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

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

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

Мой вопро

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

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

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

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

Я почти уверен, что идентификатор назначен SMTP-сервером, а протокол SMTP не указывает, возвращать ли это значение клиенту. Обойти это можно было бы, если бы BCC передавал то же сообщение учетной записи, которой вы управляете, и извлекал идентификатор сообщения из этого сообщения ... при условии, что идентификатор сообщения генерируется один раз на начальном SMTP-сервере. Еще одна возможность - добавить пользовательский «X-tag» в электронное письмо. Jeremy Holovacs
К сожалению за / Stackoverflow.com вопросы / 7095104 / ... Для этого нет пуленепробиваемого метода. Jeremy Holovacs
Джереми Holovacs: Это не проблема здесь. Для отслеживания отказов вы знаете, что сообщение не было доставлено, и вы хотите узнать, для какого адреса был создан отскок. Это сложно, но выполнимо. Также, к сведению, большинство MSA на практике позволяют вам указать свой собственный Message-Id; но, как отмечалось в моем ответе, это не очень помогает, потому что некоторые отскоки тупо пропускают исходный идентификатор сообщения. tripleee
@ tripleee, я не уверен, что это правда при любых обстоятельствах, то есть я не верю, что действующий почтовый ретранслятор обязан по определенному протоколу RFC ретранслировать уведомление о сбое. Я признаю, что могу ошибаться. Jeremy Holovacs
Отсутствие отказов выходит за рамки этого обсуждения, как я понимаю, в любом случае. tripleee

Ваш Ответ

2   ответа
2

тью Бернштейна, чтобы узнать, почемуMessage-Id и другие. не надежны.http: //cr.yp.to/proto/verp.tx

Попытка выяснить, как сделать VERP с GMail ... Не удается отправить с использованием плюсовых адресов, поскольку GMail переопределяет электронную почту на аутентифицированном аккаунте (даже если ваш плюсовой адрес основан на аутентифицированном почтовом адресе). MikeJansen
@ MikeJansen: Если у вас есть вопрос, задайте вопрос. tripleee
Извините, не уверен, почему я опубликовал этот комментарий. Не могу действительно сделать VERP с Gmail из того, что я нашел. Этот пост суммирует то, что я нашел: / Stackoverflow.com вопросы / 9925392 / .... Мне нужно будет использовать другой SMTP-сервер, мой или другого провайдера. MikeJansen
3

авкой электронного письма. Я использую следующий код:

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

Похожие вопросы