Интеграция функциональности клиента 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 ]

28 голосов
/ 25 декабря 2010

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

OpenPop.NET возвращается в активное развитие. SSL был введен полтора года назад. Проект подвергся серьезному рефакторингу и теперь стал намного более стабильным и простым в использовании. Когда я занялся проектом, в нем было много ошибок, и на данный момент я не знаю ни одного. Реализовано множество дополнительных функций, в основном в парсере MIME. Проект поддерживается модульными тестами, и каждый раз, когда обнаруживается ошибка, создается модульный тест, чтобы показать эту ошибку перед ее исправлением. сопровождающий веб-сайт с примерами теперь существует. Также были другие обновления, но я не хочу упоминать их все.

Кроме того, лицензия OpenPop.NET была изменена с LGPL на Public Domain (иначе, без ограничений). Я думаю, что это значительное улучшение для коммерческих пользователей.

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

Недавно я реализовал OpenPop для проекта и был доволен им. Он делает то, что говорит на жестяной банке. (и это бесплатно.)

6 голосов
/ 24 декабря 2008

Конструктор класса SslStream был изменен и загружен. Рекомендуемая версия не имеет проблем в использовании.

2 голосов
/ 21 августа 2014

Новая опция (по состоянию на 2014 год) - MailKit от Xamarin, доступная по лицензии MIT. Он анализирует сообщения с диска в 25 раз быстрее, чем OpenPOP.NET. Он включает поддержку IMAP, POP3 и SMTP и выглядит очень быстрым и надежным.

2 голосов
/ 18 мая 2010

Возможно, вы захотите включить в свой рейтинг Mail.dll .NET mail component . Он имеет поддержку SSL, Unicode и поддержку электронной почты для нескольких стран:

using(Pop3 pop3 = new Pop3())
{
    pop3.Connect("mail.host.com");      // Connect to server
    pop3.Login("user", "password");     // Login

    foreach(string uid in pop3.GetAll())
    {
        IMail email = new MailBuilder()
   .CreateFromEml(pop3.GetMessageByUID(uid));

        Console.WriteLine(email.Subject);
    }
    pop3.Close(true);  
}

Протокол IMAP также поддерживается.

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

Вы можете скачать его здесь: http://www.lesnikowski.com/mail

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

C # Mail доступен на Codeplex и довольно прост в использовании.

1 голос
/ 25 февраля 2011

Так как мне пришлось автоматизировать некоторые вещи обработки электронной почты. Я взял OpenPop.net Я искал, как я мог пересылать почтовые сообщения с помощью этой библиотеки, и наткнулся на эту удивительную функцию:

Подводя итог, я выбрал OpenPop.Net и рекомендую его!

С наилучшими пожеланиями, JP

1 голос
/ 12 июля 2009

Если вам нужен SSL для доступа к Gmail ... вот некоторые модификации библиотеки OpenPOP.net, которые предоставляют ей поддержку SSL.

OpenPop.net изменен, чтобы включить поддержку SSL для доступа к Gmail

1 голос
/ 08 декабря 2008

Lumisoft с открытым исходным кодом и включает в себя POP-клиента (среди прочего). Он существует уже много лет, очень стабильный.

1 голос
/ 06 декабря 2008

Я сделал свой собственный анализатор Mime и добавил его в CodePlex, потому что я продолжал сталкиваться с необработанными исключениями с другими, когда речь шла о странных кодировках или странных комбинациях вложений. Реализация pop3-клиента сырая, просто сделана для целей тестирования, но справляется с этим. Часть парсера Mime заполняет стандартный объект MailMessage, так что вы можете легко переслать его в него. Я могу расширять / улучшать его по запросу, но сейчас он отлично справляется со своими задачами. Не стесняйтесь проверить это.

http://www.codeplex.com/mimeParser

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