Consigli per un componente .NET per accedere a una casella di posta elettronica [chiuso]

StackOverflow https://stackoverflow.com/questions/18006

  •  09-06-2019
  •  | 
  •  

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?

È stato utile?

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.

alt text

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:

http://www.afterlogic.com/wiki/Getting_notifications_about_new_messages_in_mailbox_%28IMAP_IDLE_and_polling%29

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top