web-dev-qa-db-fra.com

Accéder à Imap en C #

Existe-t-il une méthode intégrée pour accéder à un serveur Imap (avec SSL) en C # ou existe-t-il une bonne bibliothèque libre?

107
UnkwnTech

Je recherche une solution IMAP depuis un moment maintenant, et après en avoir essayé plusieurs, je vais avec AE.Net.Mail .

Vous pouvez télécharger le code en allant sur l'onglet Code et en cliquant sur la petite icône "Télécharger". Comme l'auteur ne fournit aucun téléchargement préconçu, vous devez le compiler vous-même. (Je crois que vous pouvez l'obtenir par NuGet cependant). Il n'y a plus de fichier .dll dans le dossier bin /.

Il n’existe pas de documentation, ce qui est un inconvénient, mais j’ai pu résoudre ce problème en consultant le code source (yay pour l’open source!) Et en utilisant Intellisense. Le code ci-dessous se connecte spécifiquement au serveur IMAP de 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", "[email protected]", "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();

Assurez-vous de vérifier la page Github pour obtenir la dernière version et d’autres exemples de code.

88
Dominic K

Dans l’espoir que cela soit utile à certains, vous voudrez peut-être jeter un coup d’œil à mon travail:

S22.Imap

Bien qu'il existe quelques bonnes et bien documentées bibliothèques IMAP pour .NET disponibles, aucune d'entre elles n'est gratuite pour un usage personnel, et encore moins commercial ... et je n'étais tout simplement pas satisfait de l'alternative gratuite que j'ai trouvée pour la plupart abandonnée.

S22.Imap prend en charge les notifications IMAP IDLE ainsi que la récupération de messages SSL et partielle. Je me suis efforcé de produire documentation et de le tenir à jour, car avec les projets que j'ai trouvés, la documentation était souvent rare ou inexistante.

N'hésitez pas à essayer et laissez-moi savoir si vous rencontrez des problèmes!

33
user1662990

Il n'y a pas de support .NET Framework pour IMAP. Vous devrez utiliser un composant tiers.

Essayez https://www.limilabs.com/mail , très abordable et facile à utiliser, il prend également en charge 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);
}

Veuillez noter qu'il s'agit d'un produit commercial que j'ai créé.

Vous pouvez le télécharger ici: https://www.limilabs.com/mail .

17

MailSystem.NET contient tous vos besoins pour IMAP4. C'est gratuit et open source.

(Je suis impliqué dans le projet)

14
user333306

Essayez d’utiliser la bibliothèque: https://imapx.codeplex.com/

Cette bibliothèque est gratuite, à code source ouvert et a un exemple à cela: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20votre%20inbox

4
PACCBET

Je n'ai pas essayé moi-même, mais c'est une bibliothèque gratuite que vous pouvez essayer (je ne suis pas si sûr de la partie SSL de celui-ci):

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

Il existe également xemail, qui a des paramètres pour SSL:

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

[EDIT] Si vous (ou le client) avez l'argent pour un client de messagerie professionnel, ce fil contient de bonnes recommandations:

Recommandations pour un composant .NET d'accéder à une boîte de réception électronique

2
Espo