Доступ до Imap в C # [закрито]


112

Чи є вбудований метод доступу до сервера Imap (із SSL) у C # чи є хороша безкоштовна бібліотека?



7
Ні. Посилання, яке ви опублікували, пов’язане з IMAP спеціально для Gmail. Однак ця посада не є.

72
Будьте обережніші, вимовляючи / маркуючи питання як дублікати. Мені нудно бачити "дублікат: [посилання] скрізь. Багато часу інші посилання не відповідають на те, що" Копіювач "хоче знати все-таки, чи це те саме питання чи ні!
βӔḺṪẶⱫŌŔ

7
Питання закрите, тому я не можу додати це як відповідь: github.com/jstedfast/MailKit, здається, є хорошим варіантом та активним проектом.
Рорі

4
Позначення корисних питань як неконструктивних насправді не конструктивне ...
Роберт Дж.

Відповіді:


90

Я деякий час шукав рішення IMAP, і, спробувавши досить багато, я йду з AE.Net.Mail .

Ви можете завантажити код, перейшовши на вкладку Код і натисніть на маленьку піктограму "Завантажити". Оскільки автор не надає попередньо створених завантажень, ви повинні їх скласти самостійно. (Я вірю, що ви можете отримати це через NuGet, хоча). У Bin / папці більше немає .dll.

Немає жодної документації, яку я вважаю недоліком, але мені вдалося перебити це, переглянувши вихідний код (так для відкритого коду!) Та використовуючи Intellisense. Наведений нижче код підключається спеціально до IMAP-сервера Gmail:

// Connect to the IMAP server. The 'true' parameter specifies to use SSL
// which is important (for Gmail at least)
ImapClient ic = new ImapClient("imap.gmail.com", "name@gmail.com", "pass",
                ImapClient.AuthMethods.Login, 993, true);
// Select a mailbox. Case-insensitive
ic.SelectMailbox("INBOX");
Console.WriteLine(ic.GetMessageCount());
// Get the first *11* messages. 0 is the first message;
// and it also includes the 10th message, which is really the eleventh ;)
// MailMessage represents, well, a message in your mailbox
MailMessage[] mm = ic.GetMessages(0, 10);
foreach (MailMessage m in mm)
{
    Console.WriteLine(m.Subject);
}
// Probably wiser to use a using statement
ic.Dispose();

Не забудьте ознайомитись на сторінці Github щодо новітньої версії та декількох кращих прикладів коду.


1
Це виглядає занадто просто, щоб бути справжнім лол. Я перевірю це!
бендер

4
@jase - Ти маєш рацію! Я не впевнений, у чому саме полягає проблема (здається, що файл властивостей?), Але мені вдалося змусити її скласти, скопіювавши всі відповідні файли в проект нового класу. Незалежно від випадку, я створив для вас бібліотеки, і ви можете додати їх у форматі .dll до вашого проекту. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Подібно до відмови від відповідальності, це поширюється на будь-які гарантії та авторські права з оригінальним проектом, і я не несу відповідальності за те, що він підірветься тощо тощо. Добре удача!
Домінік К

4
+1 Я просто завантажив і склав останню версію програми AE.Net.Mail у VS2010, і вона працювала чудово. Я мав набагато кращий досвід, ніж з ImapX, дякую за пораду. Код тут дав мені хороший стрибок.
RedFilter

8
Чому люди ходять і пишуть такі чудові речі, а потім взагалі не включають документацію? Я не розумію
Simon_Weaver

2
Він працює, але в нових версіях конструктор повинен виглядати так: ImapClient ic = new ImapClient ("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, правда);
Огглас

34

Сподіваючись, що комусь це буде корисно, ви, можливо, захочете перевірити його:

S22.Imap

Хоча існує декілька хороших і добре задокументованих бібліотек IMAP для .NET, жодна з них не є безкоштовною для особистого, не кажучи вже про комерційному використанні ... і я просто не був задоволений здебільшого занедбаними безкоштовними альтернативами, які я знайшов.

S22.Imap підтримує IMAP IDLE-сповіщення, а також SSL та часткове отримання повідомлень. Я доклав певних зусиль для виготовлення документації та її актуалізації, тому що, з моїх знайдених проектів, документація часто була рідкою або взагалі не існує.

Не соромтеся спробувати і повідомте мене, якщо ви зіткнетесь з будь-якими проблемами!


Спробував AE.Net.Mail першим і виявив, що S22.Imap краще, як по документації, так і по функціях, які мені були потрібні до цього часу.
angularsen

Мені сподобалася концепція S22.Imap. Але те, що мені не вистачає - це доступ через індекс або номер повідомлення.
Tejasvi Hegde

300 ура для S22.Imap. Прості ефективні та корисні в реальних сценаріях. TheSearch () i sbrilliant
Vishnoo Rath

Як я можу зберегти синхронізацію своєї поштової скриньки з IMAP за допомогою цієї бібліотеки?
JackXandar

1
Будь-які ідеї, чому я отримаю InvalidCredentialsException з повідомленням "НЕ [WEBALERT потрібен веб-вхід]" при спробі входу? IMAP увімкнено в обліковому записі Gmail. Ідеї?
Auri Rahimzadeh

19

Немає підтримки .NET Framework для IMAP. Вам потрібно буде використовувати якийсь сторонній компонент.

Спробуйте https://www.limilabs.com/mail , він дуже доступний і простий у використанні, він також підтримує SSL:

using(Imap imap = new Imap())
{
    imap.ConnectSSL("imap.company.com");
    imap.Login("user", "password");

    imap.SelectInbox();
    List<long> uids = imap.SearchFlag(Flag.Unseen);
    foreach (long uid in uids)
    {
        string eml = imap.GetMessageByUID(uid);
        IMail message = new MailBuilder()
            .CreateFromEml(eml);

        Console.WriteLine(message.Subject);
        Console.WriteLine(message.TextDataString);
    }
    imap.Close(true);
}

Зверніть увагу, що це створений мною комерційний продукт.

Завантажити його можна тут: https://www.limilabs.com/mail .


3
Завантажили та працювали протягом декількох хвилин :) Дуже добре
Moulde

Чи підтримує він передачу маркера за допомогою oAuth 2 замість пароля?
користувач1166905


2
Чудовий компонент, працює як шарм. Випробував пробну версію (майже повністю функціональну) протягом двох тижнів, потім придбав ліцензію.
Олексій

1
Це справді чудова складова. На відміну від усіх матеріалів із відкритим кодом, які ми спробували, цей фактично живий та сучасний (я пишу це у 2016 році). Дякую @PawelLesnikowski PS. Я ніяким чином не пов'язаний.
jazzcat

15

MailSystem.NET містить усі ваші потреби в IMAP4. Це безкоштовно та з відкритим кодом.

(Я беру участь у проекті)


2
проект активний ?? остання версія від: понеділок, 14 грудня 2009 р. о 9:00
Кікенет

1
Сьогодні не так багато можливостей додати, скільки більшість потреб уже покрито. Здійснюються лише виправлення помилок та невеликі покращення під час їх надсилання. Але їх не так багато, бібліотека дуже міцна.

4
Цей проект, здається, мертвий. Не працює з IMAP4 належним чином, не
отримує

6
@alhambraeidos і @Denis правильні. Проект практично мертвий. Зразки не збираються з-під ярусів ні в VS 2008, ні в 2010 році. Я перевернув їх, після чого довелося проникати через 16 довідкових питань. Документація застаріла, і сторінка CodePlex залишається без відповіді на будь-які питання / коментарі за останній рік або більше. Я відмовився і закінчив купувати Mail.dll (ні, я не пов’язаний з ними).
sohtimsso1970

2
проект досить мертвий, IDLE не працює належним чином mailsystem.codeplex.com/workitem/23586
Грег Дін

5

Спробуйте скористатися бібліотекою: https://imapx.codeplex.com/

Ця бібліотека вільна, з відкритим кодом та має приклад для цього: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


FYI: схоже, що impx не підтримує IDLE
Грег Дін,

ImapX зараз підтримує розширення IDLE.
Павло Азанов

моя бібліотека, на мій досвід, значно повільніше, ніж AE.Net.Mail - це не має сенсу, окрім як слід попередити!
Simon_Weaver

1
Ця бібліотека містить основні помилки (v2.0.0.18).
Девід

2

Я сам не пробував це, але це безкоштовна бібліотека, яку ви можете спробувати (я не дуже впевнений у частині SSL на цій):

http://www.codeproject.com/KB/IP/imaplibrary.aspx

Також є xemail, який має параметри для SSL:

http://xemail-net.sourceforge.net/

[EDIT] Якщо у вас (або у клієнта) є гроші на професійного поштового клієнта, ця нитка має кілька хороших рекомендацій:

Рекомендації для компонента .NET для доступу до скриньки електронної пошти


Я використовував Imaplibrary в codeproject, але він не має необхідної функціональності Xemail Ill Checkout
UnkwnTech

stackoverflow.com/questions/86553 / ... , я отримую цю помилку: сторінка не знайдена
Kiquenet

Я змінив посилання, дякую, що повідомили мені.
Еспо

REE: codeproject.com/KB/IP/imaplibrary.aspx у своїй відповіді; Це досить круто. Використовуєте його з минулого тижня для клієнта електронної пошти і не мали з ним жодних проблем.
βӔḺṪẶⱫŌŔ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.