У меня есть веб-приложение, которое требует, чтобы серверный компонент периодически обращался к почтовым ящикам POP3 и получал электронные письма. Затем службе необходимо обработать электронные письма, которые будут включать:
- Проверка электронной почты против некоторых бизнес-правил (содержит ли она действительную ссылку в строке темы, которую отправил пользователь и т.д.).
- Анализ и сохранение любых вложений на диск
- Возьмите данные электронной почты и вложения и создайте новый элемент в базе данных
- Или обновить существующий элемент, где ссылка соответствует строке темы входящего письма
Каков наилучший способ приблизиться к этому? Я действительно не хочу писать POP3-клиент с нуля, но мне нужно настроить обработку электронной почты. В идеале я мог бы подключить какой-то компонент, который выполняет доступ и поиск для меня, возвращая массивы вложений, текстовый текст, строку темы и т.д., Готовые для моей обработки...
[ОБНОВЛЕНИЕ: обзоры]
ОК, поэтому я потратил немало времени на изучение (в основном, бесплатных) библиотек .NET POP3, поэтому я решил дать краткий обзор некоторых из упомянутых ниже и нескольких других:
- Pop3.net - бесплатно - работает нормально, очень просто, с точки зрения функциональности. Это в значительной степени просто команды POP3 и некоторая кодировка base64, но она очень проста - возможно, хорошее введение.
- Pop3 Wizard - коммерческий/некоторый открытый исходный код - не удалось это построить, пропуская DLL, я бы не стал беспокоиться об этом
- С# Mail - бесплатно для личного использования - работает хорошо, поставляется с парсером Mime и SMTP-клиентом, однако комментарии находятся на японском языке (не большое дело), и он не работал с SSL "из коробки" - мне пришлось сменить конструктор SslStream, после которого он не работал.
- OpenPOP - бесплатно - не обновлялся около 5 лет, поэтому текущее состояние .NET 1.0, не поддерживает SSL, но это не проблема для решения - я просто заменил существующий поток SslStream, и он сработал. Поставляется с парсером Mime.
Из бесплатных библиотек я бы пошел на С# Mail или OpenPOP.
Я просмотрел несколько коммерческих библиотек: Chillkat, Rebex, RemObjects, JMail.net, Основываясь на характеристиках, цене и впечатлении от компании, я, вероятно, поеду на Rebex и в будущем, если мои требования изменятся или я столкнулся с производственными проблемами с С# Mail или OpenPOP.
В случае, если это кому-то нужно, это заменяющий конструктор SslStream, который я использовал для включения SSL с С# Mail и OpenPOP:
SslStream stream = new SslStream(clientSocket.GetStream(), false,
delegate(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors errors) { return true; });