Коды ошибок SMTP и определение того, доставлена ​​ли еще электронная почта - PullRequest
1 голос
/ 08 июня 2010

Я использую System.Net.Mail для отправки почты. Я не знаю тип / версию SMTP-реле, к которому оно будет подключаться.

Некоторые ошибки приводят к тому, что электронное письмо не отправляется (например, нет адресов или неверный адрес), в то время как другие ошибки все равно приводят к отправке электронного письма.

например. Отправить: bob@somewhere.com CC: fred@somewhere.com и DoesNotExist@somewhere.com могут привести к ошибке

The server response was: 550 #5.1.0 Address rejected DoesNotExist@somewhere.com.

Но электронная почта все еще доставляется Бобу и Фреду.

Есть ли какая-либо ссылка на то, какие коды ошибок по-прежнему будут приводить к доставке электронной почты, или каким-либо программным способом определения этого?

Ответы [ 3 ]

1 голос
/ 08 июня 2010

Это способ работы SMTP, как описано в RFC. Невозможность доставки одному получателю не влияет на доставку другим получателям.

Обычно коды, начинающиеся с 4 и 5, являются ошибками, коды, начинающиеся с 2, являются кодами успеха - см. RFC821 раздел «4.2.2. СПИСОК ЧИСЛЕННЫХ ЗАКАЗОВ КОДОВ ОТВЕТА».

«Электронная почта доставляется» трудно определить. Электронная почта, принятая для доставки сервером SMTP, определяется протоколом SMTP (и сервер будет сигнализировать о принятии для доставки сообщения), но этот сервер может просто передать сообщение на другой сервер или работать в интеллектуальном режиме. конфигурация хоста, где он просто принимает сообщения и передает их на промежуточный узел - доставка - это другое дело, и обычно она связана с локальной доставкой (LMTP).

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

1 голос
/ 08 июня 2010

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

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

0 голосов
/ 08 июня 2010

Отчеты о недоставке (NDR) - это системные сообщения, в которых сообщается о состоянии доставки сообщения отправителю. Сообщения являются подклассом общей информационной структуры сообщений, которая называется уведомлениями о состоянии доставки. Уведомления о состоянии доставки описывают три различных типа ситуаций:

* Success (2.X.X numeric codes)
* Persistent transient failure (4.X.X numeric codes)
* Permanent failures (5.X.X numeric codes)

Подробнее об уведомлениях о состоянии доставки см. В Запросах на комментарии (RFC) 1891 и RFC 1893.

Цитируется из службы поддержки Microsoft http://support.microsoft.com/kb/284204

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...