Domanda

Come posso leggere a livello di codice un'e-mail in arrivo con .NET. Ho bisogno di un metodo per prendere il contenuto del messaggio e-mail (in questo caso XML) su un server POP e leggerlo nella mia applicazione.

Idealmente questo potrebbe essere risolto da:

  • Codice .NET che posso eseguire come attività in background sul mio server web a elaborare l'e-mail.
  • Un servizio che può postare i contenuti dell'email al mio server web.

Anche se sono aperto ad altre opzioni.

EDIT: copiato da " non-risposta " ;:

  

Attualmente, stiamo esaminando l'utilizzo di   account di posta elettronica la nostra società di hosting   fornisce.

     

Il nostro server di posta potrebbe potenzialmente   essere un'opzione, ma è qualcosa di   dovremmo contattare l'host per.

È stato utile?

Soluzione

In realtà abbiamo appena implementato lo stesso tipo di cose.

Elaboriamo il contenuto dei messaggi e-mail e inviamo i dati al nostro CRM tramite un servizio web. Usiamo c # con .net 3.5

Per elaborare la posta siamo andati con IMap. Esistono alcune librerie client .net su CodeProject. Penso che abbiamo usato quello di LumiSoft .

Abbiamo provato WebDav ma non abbiamo avuto molta fortuna. Questo ci ha lasciato con Pop3 o IMap. IMap supporta le cartelle, di cui avevamo bisogno, quindi siamo andati con quello. Sono sicuro che sarebbe facile fare la stessa cosa con POP3 se il tuo server non supporta IMap.

Fondamentalmente connettiamo il nostro server Exchange ogni ora, eliminiamo qualsiasi nuova e-mail ed elaboriamo. Finora funziona bene.

Modifica: utilizziamo anche SharpMimeTools per rendere le email non elaborate più utilizzabili formato.

Altri suggerimenti

Ci sono alcune opzioni, nel caso in cui tu abbia un bus di servizio a tua disposizione, per lo più viene fornito con un adattatore pop3.

Oppure puoi usare un pop3 api (easymail di quiksoft è abbastanza buono). Ha anche un ottimo prodotto per l'elaborazione dei rimbalzi.

Per leggere tutti i messaggi SMTP. Se possiedi il mailserver, a seconda del tipo di server ci sono altri modi per accedere ai messaggi, a volte Apis e plugin personalizzati o il filesystem. Ospiti il ??tuo server di posta? Quale mailserver usi?

Se possibile, non sceglierei per il protocollo POP, ha alcune limitazioni tra le altre cose come avere una sola cartella, " ottenere / leggere " un messaggio rimuove il messaggio dalla cartella (che significa un processo per leggere i messaggi) e altre cose. A seconda del numero di mail che devi analizzare, potrebbe comunque funzionare per te. L'IMAP sarebbe già un miglioramento.

Con il componente IMAP quiksoft:

//create a new IMAP4 object, connect 
//to a IMAP4 server and login 
IMAP4 imap = new IMAP4();
imap.Connect("mail.yourdomain.com");
imap.Login("mailbox", "password");

//select the inbox and download the envelopes
imap.SelectMailbox("Inbox");
EnvelopeCollection imapEnvelopes;
imapEnvelopes = imap.GetEnvelopes();

//loop through each message
//and output the subject
foreach (Envelope imapEnvelope in imapEnvelopes)
{
   //write the subject out to the console
   Console.WriteLine(imapEnvelope.Subject);
}

//close resources
imap.Logout();

Il server di posta elettronica Merak di IceWarp è stato ottimo per questo. Ci consente di impostare un tipo speciale di account chiamato account eseguibile. Associ un .exe all'indirizzo e-mail e scegli un sacco di cose da inviare dalla riga di comando. Quando un'e-mail viene inviata a quell'account, si avvia l'eseguibile. .Exe deve essere un'app console e devi fare attenzione che non si blocchi e cosa no, ma ho pensato che fosse la soluzione perfetta.

Lo usiamo per gestire le statistiche di elaborazione da Google Analytics e rimbalzare da altri server di posta.

Potresti sempre fai-da-te A Classe POP 3 POP è uno dei protocolli più semplici

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