Подтвердить что ты не робот

Интеграция клиентских функций POP3 в приложение С#?

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

Вы можете включить Mail.dll.NET почтовый компонент в свой рейтинг. Он поддерживает 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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

Взгляните на интеграцию 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.

Ответ 10

DasBlog использует хороший (и бесплатный) один захват исходного пакета. Я использовал его (но я не помню, кто его написал, и я не на своем ноутбуке - Pavel L, я думаю?). Это не идеально, и он не делает SSL, но он отлично работает в противном случае.

Ответ 11

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

http://www.codeplex.com/mimeParser

Ответ 12

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

Ответ 14

Так как мне пришлось автоматизировать некоторые обработки электронной почты. Я взял OpenPop.net Я искал способ пересылки сообщений с этой библиотекой и столкнулся с этой удивительной функцией: http://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Mime.Message.ToMailMessage.html

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

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

Ответ 15

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