Consigli per un componente .NET per accedere a una casella di posta elettronica [chiuso]
Domanda
Mi è stato chiesto di scrivere un servizio Windows in C# per monitorare periodicamente una casella di posta elettronica e inserire i dettagli di eventuali messaggi ricevuti in una tabella di database.
Il mio istinto è di farlo tramite POP3 e, come previsto, cercare su Google "componente .NET POP3" produce innumerevoli (ok, 146.000) risultati.
Qualcuno ha già fatto qualcosa di simile e potete consigliarmi un componente decente che non mandi in bancarotta (poche centinaia di dollari al massimo)?
Ci sarebbero dei vantaggi nell'utilizzare IMAP anziché POP3?
Soluzione
Lo consiglio bambino.Hanno componenti abbastanza stabili e puoi ottenere il loro componente di posta elettronica a un prezzo economico di $ 99 per un singolo sviluppatore.Personalmente, penso che scegliere l'intero pacchetto di componenti sia un affare migliore, dato che costa solo $ 289 e viene fornito con molti componenti utili.Non sono affiliato con loro in alcun modo, anche se probabilmente sembro così.
Altri suggerimenti
Con il protocollo IMAP puoi accedere sottocartelle, E impostare lo stato del messaggio (visto/non visto), puoi anche usare OZIARE funzione per notifiche istantanee.
Mail.dll include POP3, IMAP, SMTP componenti con SSL supporto e potente parser MIME:
using(Imap imap = new Imap())
{
imap.Connect("imap.server.com"); // or ConnectSSL for SSL
imap.Login("user", "password");
imap.SelectInbox();
List<long> uids = imap.Search(Flag.Unseen);
foreach (long uid in uids)
{
IMail mail = new MailBuilder()
.CreateFromEml(imap.GetMessageByUID(uid));
Console.WriteLine(mail.Subject);
}
imap.Close();
}
Tieni presente che questo è un prodotto commerciale che ho creato.
Puoi scaricarlo su https://www.limilabs.com/mail
Utilizzo SharpMimeTools gratuito e open source nella mia applicazione, BugTracker.NET.È stato molto affidabile:
http://anmar.eu.org/projects/sharpmimetools/
Vedere i file POP3Client.cs, POP3Main.cs e insert_bug.aspx
io raccomanderei Intelletto avanzato.Sono disponibili componenti per POP3 e IMAP (ASPNetPOP3 e ASPNetIMAP).Buona qualità e supporto molto reattivo: ricordo di aver ricevuto risposte alle mie domande durante un fine settimana.
Potresti voler controllare il nostro Componente Rebex Mail.Include IMAP, SMTP, POP3 protocolli e e S/MIME parser.
IL POP3
non prevede il concetto di messaggi "non letti" né la ricerca di messaggi che corrispondono a criteri specifici. POP3
restituisce semplicemente tutti i messaggi nella tua casella di posta.
Utilizzando IMAP
puoi istruire il server IMAP a inviarti solo messaggi non letti, messaggi arrivati dall'ora specificata, messaggi di un utente specifico ecc.Non è necessario scaricare tutto sul client ed eseguire lì il filtraggio.
Il codice seguente mostra come scaricare i messaggi non letti da Imap
server utilizzando Rebex.Net.Imap
classe.
// create client, connect and log in
Imap client = new Imap();
client.Connect("imap.example.org");
client.Login("username", "password");
// select folder
client.SelectFolder("Inbox");
// get message list - envelope headers
ImapMessageCollection messages = client.Search
(
ImapSearchParameter.HasFlagsNoneOf(ImapMessageFlags.Seen)
);
// display info about each message
Console.WriteLine("UID | From | To | Subject");
foreach (ImapMessageInfo message in messages)
{
Console.WriteLine(
"{0} | {1} | {2} | {3}",
message.UniqueId,
message.From,
message.To,
message.Subject);
}
// disconnect
client.Disconnect();
Segue un esempio di combinazione di più criteri di ricerca.Verranno restituiti i messaggi dell'ultimo anno di dimensioni superiori a 100 KB.
ImapMessageCollection messages = client.Search
(
ImapSearchParameter.Arrived(DateTime.Now.AddYears(-1), DateTime.Now),
ImapSearchParameter.Size(1024 * 100, Int32.MaxValue)
);
È possibile scaricare la versione di prova da rebex.net/secure-mail.net/download.aspx
Se utilizzi un'implementazione POP3 open source o qualcosa di disponibile gratuitamente, avrai accesso per modificare il codice ed espanderlo nella direzione necessaria.Un rapido Google ha prodotto questo C# Codice POP3 da Code Project per recuperare i messaggi.
C'è qualcosa di potente nel creare il proprio, o almeno nell'estenderlo.
Lumisoft è open source e include client IMAP e POP (tra le altre cose).Li uso da anni senza problemi.
Che ne dici del WCF?È gratis.
Se hai un server Exchange:http://msdn.microsoft.com/en-us/library/bb397812.aspx
un esempio per pop3:http://bartdesmet.net/blogs/bart/archive/2006/09/13/4417.aspx
C#Mail costa $ 0 ma ha anche la licenza GNU GPL, quindi assicurati che sia OK.
Puoi farlo utilizzando gli oggetti MailBee.NET: http://www.afterlogic.com/products/net-email-components
Anche se consiglierei di utilizzare IMAP, soprattutto perché offre il supporto IDLE già menzionato qui, potresti fare lo stesso con POP3.È disponibile una breve descrizione di entrambi gli approcci e un esempio completo per lo scenario IMAP IDLE:
Tieni presente che sono affiliato con AfterLogic e sarò lieto di aiutarti se hai bisogno di aiuto, controlla l'opzione Richiedi supporto sul nostro sito web.
IMAPX2 è il migliore.Utilizzando IMAP puoi controllare le cartelle in un server di posta, cosa che non potresti fare utilizzando POP.IMAPX è un codice open source che puoi esaminare ed è gratuito.
IMAPX è semplice e affidabile.