Интеграция функциональности клиента POP3 в приложение C #? - PullRequest
53 голосов
/ 25 октября 2008

У меня есть веб-приложение, которому требуется серверный компонент для периодического доступа к почтовым ящикам 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; });

Ответы [ 15 ]

1 голос
/ 25 октября 2008

DasBlog использует хороший (и бесплатный) - захватить пакет с исходным кодом. Я использовал это (но я не могу вспомнить, кто написал это, и я не на своем ноутбуке - Павел Л, я думаю?). Он не идеален и не поддерживает SSL, но в остальном работает нормально.

1 голос
/ 25 октября 2008

Посмотрите на интеграцию POP3 в моем приложении с открытым исходным кодом BugTracker.NET на http://ifdefined.com/bugtrackernet.html. Все бесплатно и с открытым исходным кодом. Самая сложная часть, анализ MIME, выполняется в BugTracker.NET SharpMimeTools по адресу http://anmar.eu.org/projects/sharpmimetools/

Важными файлами, которые показывают, как я использую логику POP3 и MIME, являются POP3Client.cs и insert_bug.aspx.

1 голос
/ 25 октября 2008

Jmail.NET . Не смотри дальше. Обратите внимание, что бесплатная версия не включает POP3. Вы хотите взять стандартную версию (или больше). Не волнуйтесь, это не дорого.

1 голос
/ 25 октября 2008

Существует несколько реализаций клиента POP3 на codeproject.com. Я не оценивал их, но, может быть, вы можете найти то, что вам нужно там. Если нет, я могу сказать, что POP3 - это довольно простой протокол. Вы даже можете прочитать свой ящик POP3 с помощью telnet, если знаете 4-5 команд.

На самом деле вам просто нужны команды и, возможно, немного base64 для декодирования вложений Вот и все.

0 голосов
/ 25 октября 2008

Если вы не возражаете платить за компонент, в прошлом мы имели большой успех с chilkat. За пару сотен долларов вы получаете библиотеку, в которой полно джема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...