Автоматически проверять возвращенные письма через POP3?

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

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

Ответ 1

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

Ответ 2

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

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

Ответ 3

Это довольно легко сделать с 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.

Ответ 4

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

Ответ 5

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

Я некоторое время огляделся, и я поселился в бесплатном и open-source диспетчере рассылки PHPlist.

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

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