2008-10-25 3 views
53

У меня есть веб-приложение, которое требует, чтобы серверный компонент периодически обращался к почтовым ящикам POP3 и получал электронные письма. Затем служба должна обрабатывать электронные письма, которые включают:Интеграция клиентских функций POP3 в приложение C#?

  • Проверка по электронной почте от некоторых бизнес-правил (содержит ли он действительный ссылка в теме, которые пользователь отправил почту и т.д.)
  • анализирующего и сохранение любых вложений на диск
  • Возьмите тело письма и крепление детали и создать новый элемент в базе данных
  • Или обновить существующий элемент, где ссылка соответствует входящей электронной почте сюжетной линии

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

[UPDATE: Обзоры]

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

  • Pop3.net - бесплатно - работает нормально, очень простой с точки зрения функциональности. Это в значительной степени просто команды POP3 и некоторая кодировка base64, но это очень прямолинейно - возможно, хорошее введение.
  • Pop3 Wizard - коммерческий/некоторый открытый исходный код - не удалось это построить, пропустив DLL, я бы не стал беспокоиться об этом
  • C#Mail - бесплатно для личного пользования - работает хорошо, поставляется с парсером Mime и SMTP-клиентом, однако комментарии на японском языке (неважно), и он не работал с SSL «из коробки», - Мне пришлось изменить конструктор SslStream, после которого он не работал.
  • OpenPOP - бесплатно - не обновлялся около 5 лет, так что это текущее состояние .NET 1.0, не поддерживает SSL, но это не было проблемой для решила - я только что заменил g с SslStream, и он сработал. Поставляется с парсером Mime.

Из бесплатных библиотек я бы отправился на C# Mail или OpenPOP.

Я просмотрел несколько коммерческих библиотек: Chillkat, Rebex, RemObjects, JMail.net. Основываясь на характеристиках, цене и впечатлении от компании, я, вероятно, поеду на Rebex и могу в будущем, если мои требования меняются или я сталкиваюсь с проблемами производства с C# Mail или OpenPOP.

В случае чьих-либо потребностей это, это конструктор SslStream замены, которые я использовал для того, чтобы SSL с C# почты и OpenPOP:

SslStream stream = new SslStream(clientSocket.GetStream(), false, 
       delegate(object sender, X509Certificate cert, 
       X509Chain chain, SslPolicyErrors errors) { return true; }); 
+1

Благодарим за обновление и предоставление информации о ваших исследованиях. – 2008-12-08 14:06:40

+0

+1; Было очень похожее требование. Спасибо, что сделали исследование. – tsilb 2008-12-30 16:55:37

+0

Небольшой комментарий: я протестировал несколько упомянутых реализаций и должен был использовать последнюю ежедневную версию с http://anmar.eu.org/projects/sharpmimetools/files/daily/, чтобы получить правильное декодирование MIME. C# Почта не удалось правильно декодировать не-ascii, а большинство других не удалось выполнить в utf8, q кодировке или других деталях. – 2009-01-03 02:40:31

ответ

1

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

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

+3

Я думаю, вы недооцениваете, насколько сложным и разнообразным MIME может быть в реальном мире. – 2009-07-14 12:57:01

+1

да, ты сказал, что правильно lol – 2009-12-31 21:11:31

1

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

0

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

2

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

7

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

1

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

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

1

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

1

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

http://www.codeplex.com/mimeParser

1

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

6

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

2

Вы можете включить 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

28

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

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

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

1

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

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

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

2

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

Смежные вопросы