Accesso a Imap in C # [chiuso]


112

Esiste un metodo integrato per accedere a un server Imap (con SSL) in C # o esiste una buona libreria gratuita?



7
No. Il link che hai pubblicato è correlato a IMAP specificamente per Gmail. Questo post, tuttavia, non lo è.

72
Si prega di fare più attenzione quando si pronuncia / contrassegna le domande come duplicati. Sono stufo di vedere "duplicato: [link] ovunque. Molte volte gli altri link non riescono a rispondere a ciò che il" Duplicatore "vuole sapere comunque, che sia la stessa domanda o no!
βӔḺṪẶⱫŌŔ

7
Domanda chiusa quindi non posso aggiungerla come risposta: github.com/jstedfast/MailKit sembra essere una buona opzione e un progetto attivo.
Rory,

4
Contrassegnare le domande utili come non costruttive non è effettivamente costruttivo ...
Robert J

Risposte:


90

È da un po 'che cerco una soluzione IMAP e, dopo averne provate alcune, vado con AE.Net.Mail .

Puoi scaricare il codice andando nella scheda Codice e facendo clic sulla piccola icona "Download". Poiché l'autore non fornisce alcun download predefinito, è necessario compilarlo da soli. (Credo che tu possa ottenerlo tramite NuGet però). Non è più presente un file .dll nella cartella bin /.

Non c'è documentazione, che considero uno svantaggio, ma sono stato in grado di tirarlo su guardando il codice sorgente (yay per l'open source!) E usando Intellisense. Il codice seguente si collega in modo specifico al server IMAP di 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();

Assicurati di controllare la pagina Github per la versione più recente e alcuni esempi di codice migliori.


1
Sembra troppo facile per essere vero lol. Lo controllerò!
bendr

4
@jase - Hai ragione! Non sono sicuro di quale sia esattamente il problema (sembra il file delle proprietà?) Ma sono stato in grado di farlo compilare copiando tutti i file rilevanti in un nuovo progetto di classe. In ogni caso, ho creato le librerie per te e quindi puoi aggiungerle come riferimenti .dll al tuo progetto. dl.dropbox.com/u/8037514/AE.Net.Mail.zip Proprio come un disclaimer, questo viene fornito con tutte le garanzie e i diritti d'autore con il progetto originale e non sono responsabile se esplode, ecc. fortuna!
Dominic K

4
+1 Ho appena scaricato e compilato l'ultimo commit di AE.Net.Mail in VS2010 e ha funzionato perfettamente. Ho avuto un'esperienza molto migliore rispetto a ImapX, grazie per il suggerimento. Il codice qui mi ha dato un buon punto di partenza.
RedFilter

8
perché le persone scrivono cose fantastiche come queste e poi non includono praticamente alcuna documentazione? Non capisco
Simon_Weaver

2
Funziona ma nelle versioni più recenti il ​​costruttore dovrebbe essere simile a questo: ImapClient ic = new ImapClient ("imap.gmail.com", "name@gmail.com", "pass", AuthMethods.Login, 993, true);
Ogglas

34

Nella speranza che possa essere utile ad alcuni, potresti dare un'occhiata al mio tentativo:

S22.Imap

Sebbene siano disponibili un paio di librerie IMAP valide e ben documentate per .NET, nessuna di esse è gratuita per uso personale, figuriamoci commerciale ... e non ero del tutto soddisfatto delle alternative gratuite per lo più abbandonate che ho trovato.

S22.Imap supporta le notifiche IMAP IDLE così come SSL e il recupero parziale dei messaggi. Mi sono impegnato a produrre documentazione e mantenerla aggiornata, perché con i progetti che ho trovato, la documentazione era spesso scarsa o inesistente.

Sentiti libero di provarlo e fammi sapere se riscontri problemi!


Ho provato prima AE.Net.Mail e ho trovato S22.Imap migliore, sia sulla documentazione che sulle funzionalità di cui avevo bisogno finora.
angularsen

Mi è piaciuto il concetto di S22.Imap. Ma quello che mi manca è accedere tramite indice o numero di messaggio.
Tejasvi Hegde

300 Saluti per S22.Imap. Semplice, efficiente e utile negli scenari del mondo reale. The .Search () i sbrilliant
Vishnoo Rath

Come posso mantenere la sincronizzazione per la mia casella di posta con IMAP utilizzando questa libreria?
JackXandar

1
Qualche idea sul perché ricevo un'eccezione InvalidCredentialsException con un messaggio di "NO [WEBALERT some url] Web login required" quando provo ad accedere? IMAP è abilitato sull'account Gmail. Idee?
Auri Rahimzadeh

19

Non è disponibile il supporto .NET framework per IMAP. Dovrai utilizzare alcuni componenti di terze parti.

Prova https://www.limilabs.com/mail , è molto conveniente e facile da usare, supporta anche 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);
}

Tieni presente che questo è un prodotto commerciale che ho creato.

Puoi scaricarlo qui: https://www.limilabs.com/mail .


3
Scaricato e funzionante in pochi minuti :) Molto carino
Moulde

Supporta il passaggio di un token utilizzando oAuth 2 invece di passare la password?
user1166905


2
Ottimo componente, funziona come un fascino. Ho testato la versione di prova (quasi completamente funzionante) per un paio di settimane, quindi ho acquistato una licenza.
Alex

1
Questo è davvero un ottimo componente. A differenza di tutte le cose open source che abbiamo provato, questa è in realtà viva e aggiornata (sto scrivendo questo nel 2016). Grazie @PawelLesnikowski PS. Non sono affiliato in alcun modo.
jazzcat

15

MailSystem.NET contiene tutto il necessario per IMAP4. È gratuito e open source.

(Sono coinvolto nel progetto)


2
il progetto è attivo ?? ultima versione datata: lunedì 14 dicembre 2009 alle 9:00
Kiquenet

1
Non ci sono così tante funzionalità da aggiungere oggi poiché la maggior parte delle esigenze è già coperta. Solo le correzioni di bug e i piccoli miglioramenti vengono applicati quando vengono inviati. Ma non ce ne sono così tanti, la libreria è molto robusta.

4
Questo progetto sembra essere morto. Non funziona correttamente con IMAP4, nessun aggiornamento e nessuna risposta dagli autori
Denis Vuyka

6
@alhambraeidos e @Denis hanno ragione. Il progetto è praticamente morto. I campioni non vengono creati, out of the box, né in VS 2008 né nel 2010. Li ho convertiti in upconvert, quindi ho dovuto superare 16 problemi di riferimento. La documentazione non è aggiornata e la pagina CodePlex rimane senza risposta per eventuali problemi / commenti nell'ultimo anno o più. Ho rinunciato e ho finito per acquistare Mail.dll (no, non sono affiliato con loro).
sohtimsso1970

2
il progetto è abbastanza morto, IDLE non funziona correttamente mailsystem.codeplex.com/workitem/23586
Greg Dean

5

Prova a utilizzare la libreria: https://imapx.codeplex.com/

Quella libreria è gratuita, open source e ha un esempio a questo: https://imapx.codeplex.com/wikipage?title=Sample%20code%20for%20get%20messages%20from%20your%20inbox


FYI: imapx non sembra supportare IDLE
Greg Dean

ImapX ha ora il supporto per l'estensione IDLE.
Pavel Azanov

questa libreria nella mia esperienza è significativamente più lenta di AE.Net.Mail - non ha alcun senso ma attenzione!
Simon_Weaver

1
Questa libreria contiene i principali bug (v2.0.0.18).
David

2

Non l'ho provato da solo, ma questa è una libreria gratuita che potresti provare (non sono così sicuro della parte SSL su questa):

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

Inoltre, c'è xemail, che ha parametri per SSL:

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

[EDIT] Se tu (o il cliente) avete i soldi per un client di posta professionale, questo thread ha alcuni buoni consigli:

Suggerimenti per un componente .NET per accedere a una casella di posta in arrivo


l'imaplibrary su codeproject è quello che stavo usando ma non ha la funzionalità necessaria Ill checkout xemail
UnkwnTech

stackoverflow.com/questions/86553/... ,, ottengo questo errore: pagina non trovata
Kiquenet

Ho cambiato il collegamento, grazie per avermelo informato.
Espo

REE: codeproject.com/KB/IP/imaplibrary.aspx nella tua risposta; È molto bello. Lo uso dalla scorsa settimana per un client di posta elettronica e non ho avuto problemi con esso.
βӔḺṪẶⱫŌŔ
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.