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