Автоматически проверять отклоненные письма через POP3? - PullRequest
10 голосов
/ 10 августа 2008

Кто-нибудь может порекомендовать программное обеспечение или библиотеку .NET, которая проверит наличие отклоненных писем и причину отказа? Я получаю отскоченные электронные письма в учетную запись pop3, которую я могу читать.

Мне нужно, чтобы моя база данных была чистой от недействительных адресов электронной почты, и хочу автоматизировать это (пометить пользователя как недействительный адрес электронной почты).

Ответы [ 5 ]

5 голосов
/ 11 августа 2008

Я проделал большую работу по обработке отказов электронных писем и разных типов. Если вы хотите быть абсолютно уверены, что электронная почта, которую вы просматриваете, действительно является отскоком определенного вида, я настоятельно рекомендую получить хороший фильтр. Я работал с Boogie Tools , и он работал очень хорошо. Это позволяет узнать, какой это отскок, Hard, Soft, Transient или даже если кто-то пытается отписаться. Он имеет множество API, включая .Net, и мне было довольно легко начать работать.

3 голосов
/ 11 августа 2008

, как abfo говорит , протокол POP3 очень прост, получение сообщений не составляет никакого труда. Разобрать сообщения, чтобы получить сообщения о сбоях, сложнее, и надежно разобрать, какая электронная почта вызвала сбой и почему произошел сбой, действительно сложно. Проблема в том, что отскок сообщения не имеют стандартного формата, формы по умолчанию варьируются от MTA к MTA. Затем администратор сайта может изменить причину сбоя, затрудняя ее распознавание, а администратор сайта может изменить шаблон сообщения об ошибке, что сделает его почти невозможным.

Посмотрите, сможете ли вы найти менеджер списков рассылки .NET и сможете ли вы повторно использовать код обработки отказов. В противном случае, посмотрите, можете ли вы изменить инструмент, который отправляет сообщения, чтобы отправлять каждое письмо от уникального (и обратимого) отправителя разработчика (VERP, я думаю, он называется?). Таким образом, вам не нужно сканировать основную часть письма, вы можете определить, какой получатель отказал, проверив адрес получателя сообщения об ошибке.

2 голосов
/ 10 августа 2008

Это довольно легко сделать с помощью TcpClient. Откройте сервер:

TcpClient tcpClient = new TcpClient();
tcpClient.Connect(POP3Server, POP3Port);
NetworkStream stream = tcpClient.GetStream();

Прочитайте приветственное сообщение:

int read = stream.Read(inBuffer, 0, inBuffer.Length);
string response = Encoding.ASCII.GetString(inBuffer, 0, read);
if (response.IndexOf("+OK") != 0) throw new ...;

Обратная запись на сервер:

byte[] outBuffer = Encoding.ASCII.GetBytes("USER " + account + "\r\n");
stream.Write(outBuffer, 0, outBuffer.Length);

Это отправляет команду USER. Вам нужно войти в систему, а затем вы можете начать захват сообщений - полный список команд см. В POP3 RFC . Если вы не хотите делать это самостоятельно, ознакомьтесь с этой статьей CodeProject .

0 голосов
/ 09 января 2009

Ваш вопрос заставил меня понять, что плагин Wordpress Newsletter, который я собирался использовать, не имеет управления отказов, и мне тоже что-то нужно.

Некоторое время я оглядывался по сторонам и остановился на бесплатном менеджере рассылки PHPlist .

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

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

0 голосов
/ 11 августа 2008

Спасибо за ответ, отлично! Я провел небольшое исследование и обнаружил, что ListNanny - также очень прост в использовании и сообщает вам тип отказов. Напишу какое-нибудь доказательство концепции и посмотрим, какая мне больше нравится ...

...