2008-08-20 2 views
16

Мне было предложено написать службу Windows на C# для периодического мониторинга почтового ящика электронной почты и вставки сведений о любых сообщениях, полученных в таблицу базы данных.Рекомендации для .NET-компонента для доступа к почтовому ящику

Мой инстинкт должен сделать это через POP3 и, конечно же, Googling для компонента «.NET POP3» производит бесчисленные (нормально, 146 000) результаты.

Кто-нибудь сделал что-либо подобное раньше, и вы можете порекомендовать достойный компонент, который не сломает банк (максимум в несколько сотен долларов)?

Будут ли какие-либо выгоды от использования IMAP, а не POP3?

+0

https://github.com/jstedfast/MailKit - хороший и активный вариант. – Rory

ответ

4

Я рекомендую chilkat. У них довольно стабильные компоненты, и вы можете получить свой компонент электронной почты так же дешево, как $ 99 для одного разработчика. Лично я думаю, что переходить со всем пакетом компонентов - это лучшее дело, так как это всего лишь $ 289 и поставляется со многими полезными компонентами. Я ни с кем не связан с ними, хотя я, наверное, звучу так, как есть.

+0

Моя единственная жалоба с Чилкатом - это API, который не «чувствует» очень .Net (если вы понимаете, что я имею в виду). например «GetLastError()» вместо исключения. Отличные компоненты, хотя и отличная цена. Поддержка абсолютно первоклассная, а также удивительно быстрый поворот в те времена, когда у меня были вопросы. –

+1

Это, вероятно, связано с тем, что это старая библиотека, которая была перенесена на .Net. – Kibbee

+2

Исключения уверены, что «чувствуете».net, но стоит прокомментировать, что в кодексах Google Code используются коды ошибок и утверждения вместо исключений. Они также дают понять в документе, что они действительно не чувствуют, что использование исключений является «неправильным», но они действительно дают некоторые веские причины. –

6

Я использую бесплатный SharpMimeTools с открытым исходным кодом в своем приложении BugTracker.NET. Это было очень надежно:

http://anmar.eu.org/projects/sharpmimetools/

Смотрите файлы POP3Client.cs, POP3Main.cs и insert_bug.aspx

+0

Спасибо Кори, я посмотрю. –

+0

Я не знаю, откуда у вас Pop3Client.cs. Я думаю, что SharpMimeTools - это отличный сингл Mime. –

1

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

+0

Привет, вы можете поделиться примером кода, чтобы просмотреть список невидимых сообщений электронной почты с помощью C#? –

3

Я бы порекомендовал AdvancedIntellect. Существуют компоненты для POP3 и IMAP (ASPNetPOP3 и ASPNetIMAP). Хорошее качество и очень отзывчивая поддержка. Я помню, как получал ответы на мои вопросы в выходные.

2

Если вы используете реализацию POP3 с открытым исходным кодом или что-то свободно доступное, то у вас будет доступ к изменению кода и его расширению в нужном направлении. Быстрый Google привел к этому C# POP3 code from Code Project для получения сообщений.

Есть что-то, что дает возможность прокатиться самостоятельно или, по крайней мере, расширить его.

alt text

+0

Также это не сломает банк до начальной стоимости $ 0. Однако следует учитывать текущую работу по разработке и общую «ТШО». –

3

Вы можете проверить наш Rebex Mail component. Она включает в себя IMAP, SMTP, POP3 протоколы и и S/MIME синтаксического анализатора.

У POP3 нет понятия «непрочитанные» сообщения или поиск сообщений, соответствующих определенным критериям. POP3 просто возвращает все сообщения во входящие.

Используя IMAP, вы можете указать сервер IMAP отправлять вам только непрочитанные сообщения, сообщения, поступившие с указанного времени, сообщения от конкретного пользователя и т. Д. Вам не нужно загружать все это клиенту и выполнять фильтрацию там.

В следующем коде показано, как загружать непрочитанные сообщения с сервера Imap с использованием класса Rebex.Net.Imap.

// create client, connect and log in 
Imap client = new Imap(); 
client.Connect("imap.example.org"); 
client.Login("username", "password"); 

// select folder 
client.SelectFolder("Inbox"); 

// get message list - envelope headers 
ImapMessageCollection messages = client.Search 
    (
    ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen) 
); 

// display info about each message 
Console.WriteLine("UID | From | To | Subject"); 
foreach (ImapMessageInfo message in messages) 
{ 
    Console.WriteLine(
     "{0} | {1} | {2} | {3}", 
     message.UniqueId, 
     message.From, 
     message.To, 
     message.Subject); 
} 

// disconnect 
client.Disconnect(); 

Ниже приведен пример объединения нескольких критериев поиска. Это вернет сообщения за последний год, превышающие 100 КБ.

ImapMessageCollection messages = client.Search 
    (
    ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now), 
    ImapSearchParameter.Size(1024 * 100, Int32.MaxValue) 
); 

Вы можете скачать пробную версию с rebex.net/secure-mail.net/download.aspx

+0

Оставьте отказ от ответственности, что это ваш продукт. – DMan

+1

@DMan: Он уже существует в первой строке почти год («Возможно, вы захотите проверить __our__ Rebex Mail ...»). Я не пытаюсь скрыть свое соединение. Предложение о том, как его улучшить, приветствуется (английский не является моим первым языком). –

+0

Извините, я пропустил эту тонкость. Мои извинения. – DMan

0

C# почты стоит $ 0, но и GNU GPL лицензии, поэтому убедитесь, что все в порядке.

7

С протоколом IMAP вы можете получить доступ к подпапок и статус набор сообщений (видел/невидимый), а также вы можете использовать IDLE функцию для мгновенных уведомлений.

Mail.dll включает POP3, IMAP, SMTP компоненты с SSL поддержки и мощный MIME парсер:

using(Imap imap = new Imap()) 
{ 
    imap.Connect("imap.server.com"); // or ConnectSSL for SSL 
    imap.Login("user", "password"); 

    imap.SelectInbox(); 
    List<long> uids = imap.Search(Flag.Unseen); 
    foreach (long uid in uids) 
    { 
     IMail mail = new MailBuilder() 
      .CreateFromEml(imap.GetMessageByUID(uid)); 
     Console.WriteLine(mail.Subject); 
    } 
    imap.Close(); 
} 

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

Вы можете загрузить его на https://www.limilabs.com/mail

0

Вы можете сделать это с помощью MailBee.NET объектов: http://www.afterlogic.com/products/net-email-components

Хотя я бы рекомендовал использовать протокол IMAP, действительно, в частности, так как он предлагает IDLE поддержку упомянутой уже здесь, вы может сделать то же самое с POP3. Там краткое описание обоих подходов, а также полный образец для IMAP IDLE сценария:

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

Пожалуйста, обратите внимание, что я связан с AfterLogic, и я буду рад помочь вам, если вам нужна помощь , проверьте вариант запроса поддержки на нашем веб-сайте.

0

IMAPX2 - лучший. Используя IMAP, вы можете управлять папками на почтовом сервере, что вы не сможете сделать с помощью POP. IMAPX - это открытый исходный код, который вы можете изучить, и его можно использовать бесплатно.

IMAPX прямой и надежный.

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