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

112

Есть ли встроенный метод доступа к серверу Imap (с SSL) на C # или есть хорошая бесплатная библиотека?

UnkwnTech
источник
3
дубликат: stackoverflow.com/questions/545724/…
Маурисио Шеффер
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
Это выглядит слишком легко, чтобы быть правдой, лол. Я это проверю!
bendr 06
4
@jase - Ты прав! Я не уверен, в чем именно проблема (похоже, файл свойств?), Но мне удалось его скомпилировать, скопировав все соответствующие файлы в новый проект класса. В любом случае, я создал библиотеки для вас, и вы можете добавить их в качестве ссылок на .dll в свой проект. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Как отказ от ответственности, это идет с любыми гарантиями и авторскими правами, которые поставляются с исходным проектом, и я не несу ответственности, если он взорвется и т. д. и т. д. Хорошо удачи!
Dominic K
4
+1 Я только что загрузил и скомпилировал последний коммит AE.Net.Mail в VS2010, и он отлично сработал. У меня был гораздо лучший опыт, чем с ImapX, спасибо за совет. Код здесь дал мне хороший толчок.
RedFilter
8
почему люди идут и пишут такие великие вещи, а потом практически не включают документации? Я не понимаю
Simon_Weaver 04
2
Это работает, но в более новых версиях конструктор должен выглядеть так: ImapClient ic = new ImapClient («imap.gmail.com», «name@gmail.com», «pass», AuthMethods.Login, 993, true);
Ogglas
34

В надежде, что это будет полезно для кого-то, вы можете проверить мои попытки:

S22.Imap

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

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

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

user1662990
источник
Сначала попробовал AE.Net.Mail и обнаружил, что S22.Imap лучше, как по документации, так и по функциям, которые мне нужны до сих пор.
angularsen
Понравился концепт S22.Imap. Но мне не хватает доступа через индекс или номер сообщения.
Tejasvi Hegde
300 Ура для S22.Imap. Просто Эффективно и полезно в сценариях реального мира. The .Search () i sbrilliant
Вишну Рат
Как я могу сохранить синхронизацию своего почтового ящика с IMAP с помощью этой библиотеки?
JackXandar
1
Есть идеи, почему я получаю InvalidCredentialsException с сообщением «НЕТ [WEBALERT some url] Web login required» при попытке входа в систему? IMAP включен в учетной записи Gmail. Идеи?
Auri Rahimzadeh
19

Платформа .NET не поддерживает 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
Скачал, запустил
Поддерживает ли он передачу токена с использованием oAuth 2 вместо передачи пароля?
user1166905
Он поддерживает OAuth2: limilabs.com/blog/oauth2-gmail-imap-web-applications
Павел Лесниковски,
2
Отличный компонент, работает как шарм. Пару недель тестировал пробную версию (почти полностью работоспособную), потом купил лицензию.
Alex
1
Это действительно отличный компонент. В отличие от всех вещей с открытым исходным кодом, которые мы пробовали, этот на самом деле жив и актуален (я пишу это в 2016 году). Спасибо @PawelLesnikowski PS. Я никоим образом не аффилирован.
jazzcat
15

MailSystem.NET содержит все, что вам нужно для IMAP4. Это бесплатно и с открытым исходным кодом.

(Я участвую в проекте)

Петр Кула
источник
2
проект активен ?? последняя версия от: понедельник, 14 декабря 2009 г., 9:00
Kiquenet,
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

a777andrey
источник
К вашему сведению: imapx, похоже, не поддерживает IDLE
Грег Дин
ImapX теперь поддерживает расширение IDLE.
Павел Азанов
По моему опыту, эта библиотека значительно медленнее, чем AE.Net.Mail - в этом нет никакого смысла, но будьте осторожны!
Simon_Weaver 04
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
UnkwnTech
Я изменил ссылку, спасибо, что сообщили мне.
Espo
REE: codeproject.com/KB/IP/imaplibrary.aspx в вашем ответе; Это довольно круто. Использую его с прошлой недели для почтового клиента и не испытывал с ним проблем.
βӔḺṪẶⱫŌŔ