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

StackOverflow https://stackoverflow.com/questions/7231

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Это довольно легко сделать с помощью 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);

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

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

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

Я некоторое время осматривался и остановился на бесплатном и с открытым исходным кодом Менеджер по рассылке PHPList новостей.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top