2009-03-21 9 views
98

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

+3

en double: http://stackoverflow.com/questions/545724/using-c-net-librarires-to-check-for-imap-messages-from-gmail-servers –

+7

Non. Le lien que vous avez publié est lié à IMAP spécifiquement pour Gmail. Ce poste, cependant, ne l'est pas. –

+62

Soyez plus prudent lorsque vous dites/marquez des questions en double. J'en ai marre de voir "dupliquer: [link] partout, la plupart du temps les autres liens ne répondent pas à ce que le" Duplicator "veut savoir de toute façon, que ce soit la même question ou pas! –

Répondre

2

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

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

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

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

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

Recommendations for a .NET component to access an email inbox

+0

l'Imaplibrary à codeproject est ce que J'utilisais mais il n'a pas la fonctionnalité nécessaire Ill checkout xemail – UnkwnTech

+0

http://stackoverflow.com/questions/86553/working-with-pop-imap-email-and-net,, j'ai cette erreur: page introuvable – Kiquenet

+0

J'ai changé le lien, merci de me le faire savoir – Espo

17

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

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

S'il vous plaît noter que ceci est un produit commercial que j'ai créé.

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

+2

fonctionne très bien, merci! – balexandre

+3

Téléchargé et était opérationnel dans quelques minutes :) Très agréable – Moulde

+0

Supporte-t-il le passage d'un jeton en utilisant oAuth 2 au lieu de passer le mot de passe? – user1166905

13

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

(je suis impliqué dans le projet)

+2

le projet est actif ?? dernière version datée: Lun Dec 14 2009 à 09:00 – Kiquenet

+1

Il n'y a pas tellement de fonctionnalité à ajouter aujourd'hui que la plupart des besoins sont déjà couverts. Seules les corrections de bogues et les petites améliorations sont validées lorsqu'elles sont soumises. Mais il n'y en a pas beaucoup, la bibliothèque est très robuste. –

+0

Puis-je l'utiliser pour obtenir des messages à partir d'Exchange 2003? – Kiquenet

82

J'ai la recherche d'une solution IMAP pour un certain temps maintenant, et après avoir essayé un certain nombre, je vais avec AE.Net.Mail.

Vous pouvez télécharger le code en accédant à l'onglet Code et en cliquant sur le petit icône "Télécharger". Comme l'auteur ne fournit aucun téléchargement prédéfini, vous devez le compiler vous-même. (Je crois que vous pouvez l'obtenir à travers NuGet si). Il n'y a plus de fichier .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é capable de fouetter cela en regardant le code source (yay pour 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 que vous extrayez la page Github pour la dernière version et des meilleurs exemples de code.

+1

Cela semble trop facile d'être vrai lol. Je vais le vérifier! – bendr

+3

Il ne sera même pas construire! :( – bendr

+4

@jase - Vous avez raison, je ne sais pas exactement quel est le problème (semble le fichier de propriétés?) Mais j'ai pu le compiler en copiant tous les fichiers pertinents dans un nouveau projet de classe. le cas, j'ai construit les bibliothèques pour vous et ainsi vous pouvez les ajouter en tant que références de .dll à votre projet http://dl.dropbox.com/u/8037514/AE.Net.Mail.zip Juste comme un avertissement, ceci vient avec toutes les garanties et droits d'auteur le projet original vient avec, et je ne suis pas responsable si elle explose, etc etc Bonne chance! – DMan

5

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

Cette libre bibliothèque, open source et ont par exemple ceci: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox

+0

FYI: imapx ne semble pas supporter IDLE –

+0

ImapX supporte maintenant l'extension IDLE. –

+0

cette bibliothèque dans mon expérience est significativement plus lent que AE.Net.Mail - cela n'a aucun sens mais soyez prévenus! –

31

Dans l'espoir qu'il sera utile à certains, vous pouvez consulter mon aller à elle:

S22.Imap

bien qu'il existe quelques bons et bien Documente d Bibliothèques IMAP pour.NET disponible, aucun d'entre eux sont libres pour usage personnel, encore moins commercial ... et Je n'étais tout simplement pas tout à fait satisfait avec les alternatives libres abandonnées pour la plupart J'ai trouvé. S22.Imap prend en charge les notifications IMAP IDLE ainsi que le chargement SSL et partiel . J'ai mis quelques efforts dans la production documentation et en gardant à jour, parce qu'avec les projets que j'ai trouvés, la documentation était souvent clairsemée ou inexistante.

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

+0

Essayé AE.Net.Mail d'abord et trouvé S22.Imap pour être mieux, à la fois sur la documentation et sur les fonctionnalités dont j'ai besoin jusqu'à présent. – angularsen

+0

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

+0

300 Cheers pour S22.Imap. Simple efficace et utile dans les scénarios du monde réel. Le .Search() i sbrilliant –

Questions connexes