Accès à Imap en C # [fermé]


112

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 gratuite?



7
Nan. Le lien que vous avez publié est lié à IMAP spécifiquement pour Gmail. Ce message, cependant, ne l'est pas.

72
Soyez plus prudent lorsque vous dites / marquez des questions comme des doublons. J'en ai marre de voir "dupliquer: [lien] partout.
Souvent,

7
Question fermée, je ne peux donc pas l'ajouter comme réponse: github.com/jstedfast/MailKit semble être une bonne option et un projet actif.
Rory

4
Marquer des questions utiles comme non constructives n'est en effet pas constructif ...
Robert J

Réponses:


90

Je cherchais une solution IMAP depuis un certain temps maintenant, et après en avoir essayé quelques-unes, je suis allé avec AE.Net.Mail .

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

Il n'y a pas de documentation, ce que je considère comme un inconvénient, mais j'ai été en mesure de résoudre ce problème en regardant 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", "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();

Assurez-vous de consulter la page Github pour la dernière version et de meilleurs exemples de code.


1
Cela semble trop facile pour être vrai lol. Je vais vérifier!
bendr

4
@jase - Vous avez raison! Je ne sais pas exactement quel est le problème (cela ressemble au fichier de propriétés?) Mais j'ai pu le faire compiler en copiant tous les fichiers pertinents dans un nouveau projet de classe. Dans tous les cas, j'ai créé les bibliothèques pour vous et vous pouvez donc les ajouter en tant que références .dll à votre projet. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Tout comme une clause de non-responsabilité, cela vient avec toutes les garanties et droits d'auteur fournis par le projet d'origine, et je ne suis pas responsable s'il explose, etc. la chance!
Dominic K

4
+1 Je viens de télécharger et de compiler le dernier commit d' AE.Net.Mail dans VS2010, et cela a parfaitement fonctionné. J'ai eu une bien meilleure expérience qu'avec ImapX, merci pour le conseil. Le code ici m'a donné un bon départ.
RedFilter

8
pourquoi les gens écrivent-ils de grandes choses comme celle-ci et n'incluent pratiquement aucune documentation? Je ne comprends pas
Simon_Weaver

2
Cela fonctionne mais dans les versions plus récentes, le constructeur devrait ressembler à ceci: ImapClient ic = new ImapClient ("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
Ogglas

34

Dans l'espoir que cela sera utile à certains, vous voudrez peut-être jeter un œil à mon essai:

S22.Imap

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

S22.Imap prend en charge les notifications IMAP IDLE ainsi que SSL et la récupération partielle des messages. J'ai déployé des efforts pour produire de la documentation et la maintenir à jour, car avec les projets que j'ai trouvés, la documentation était souvent rare ou inexistante.

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


J'ai d'abord essayé AE.Net.Mail et j'ai trouvé que S22.Imap était meilleur, à la fois sur la documentation et sur les fonctionnalités dont j'avais besoin jusqu'à présent.
angularsen

J'ai aimé le concept de S22.Imap. Mais ce qui me manque, c'est l'accès via un index ou un numéro de message.
Tejasvi Hegde

300 Cheers pour S22.Imap. Simple efficace et utile dans des scénarios du monde réel. The .Search () i sbrilliant
Vishnoo Rath

Comment puis-je maintenir la synchronisation de ma boîte aux lettres avec IMAP en utilisant cette bibliothèque?
JackXandar

1
Des idées pour lesquelles j'obtiendrais une exception InvalidCredentialsException avec un message "NO [WEBALERT some url] Web login required" lors de la tentative de connexion? IMAP est activé sur le compte Gmail. Des idées?
Auri Rahimzadeh

19

Il n'y a pas de prise en charge du framework .NET pour IMAP. Vous devrez utiliser un composant tiers.

Essayez https://www.limilabs.com/mail , c'est 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 .


3
Téléchargé et était opérationnel en quelques minutes :) Très bien
Moulde

Prend-il en charge la transmission d'un jeton en utilisant oAuth 2 au lieu de passer un mot de passe?
user1166905


2
Grand composant, fonctionne comme un charme. Testé la version d'essai (presque entièrement fonctionnelle) pendant quelques semaines, puis acheté une licence.
Alex

1
C'est en effet un excellent composant. Contrairement à tous les trucs open-source que nous avons essayés, celui-ci est en fait vivant et à jour (j'écris ceci en 2016). Merci @PawelLesnikowski PS. Je ne suis en aucun cas affilié.
jazzcat

15

MailSystem.NET contient tout ce dont vous avez besoin pour IMAP4. C'est gratuit et open source.

(Je suis impliqué dans le projet)


2
le projet est actif ?? dernière version en date du: Mon 14 décembre 2009 à 9 h 00
Kiquenet

1
Il n'y a pas tellement de fonctionnalités à ajouter aujourd'hui car la plupart des besoins sont déjà couverts. Seules les corrections de bogues et les petites améliorations sont validées lors de leur soumission. Mais il n'y en a pas tellement, la librairie est très robuste.

4
Ce projet semble mort. Ne fonctionne pas correctement avec IMAP4, aucune mise à jour et aucune réponse des auteurs
Denis Vuyka

6
@alhambraeidos et @Denis sont corrects. Le projet est pratiquement mort. Les échantillons ne sont pas construits, hors de la boîte, ni dans VS 2008 ni en 2010. Je les ai convertis puis j'ai dû parcourir 16 problèmes de référence. La documentation est obsolète et la page CodePlex reste sans réponse pour tout problème / commentaire au cours de l'année écoulée ou plus. J'ai abandonné et j'ai fini par acheter Mail.dll (non, je ne suis pas affilié à eux).
sohtimsso1970

2
le projet est assez mort, IDLE ne fonctionne pas correctement mailsystem.codeplex.com/workitem/23586
Greg Dean

5

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

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


FYI: imapx ne semble pas soutenir IDLE
Greg Dean

ImapX prend désormais en charge l'extension IDLE.
Pavel Azanov

cette bibliothèque dans mon expérience est significativement plus lente que AE.Net.Mail - cela n'a aucun sens, mais soyez prévenu!
Simon_Weaver

1
Cette bibliothèque contient des bogues majeurs (v2.0.0.18).
David

2

Je ne l'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 sur celle-ci):

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

En outre, il existe xemail, qui a des paramètres pour SSL:

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

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

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


l'Imaplibrary de codeproject est ce que j'utilisais mais il n'a pas la fonctionnalité nécessaire. Ill checkout xemail
UnkwnTech

stackoverflow.com/questions/86553/…,, j'obtiens cette erreur: page non trouvée
,, Kiquenet

J'ai changé le lien, merci de m'en avoir informé.
Espo

REE: codeproject.com/KB/IP/imaplibrary.aspx dans votre réponse; C'est vraiment cool. Je l'utilise depuis la semaine dernière pour un client de messagerie et je n'ai eu aucun problème avec lui.
βӔḺṪẶⱫŌŔ
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.