2012-01-30 21 views
11

Qualcuno ha visto una coda di posta elettronica .net?. Coda SMTP SMTP

Desidero poter specificare il server SMTP da inviare tramite, segnalare problemi e riprovare i messaggi di posta elettronica se necessario o richiesto.

Idealmente mi piacerebbe qualcosa di open source.

+1

Ciao Fran: quale soluzione sei arrivato qui per favore? –

risposta

1

Acquista System.Net.Mail, http://msdn.microsoft.com/en-us/library/dk1fb84h.aspx. In particolare, si desidera controllare MailMessage e SmtpClient.

EDIT

// Invokes the SendEmail method on another thread. 
// Read MSDN on catching exception on completion and then wait a bit and send again. 
Task.Factory.StartNew(() => SendEmail()); 
+0

Grazie, sono molto più familiare con l'invio di e-mail, ma voglio essere in grado di passare l'invio di una e-mail a un altro servizio in modo che l'utente non debba attendere l'invio dell'e-mail e gli errori non vengano inviati t fermare il thread principale. –

+0

Per quanto riguarda l'invio a un altro utilizzando TPL, http://msdn.microsoft.com/en-us/library/dd537609.aspx. Vedi la mia modifica sulla creazione di un'attività su un altro thread. –

+0

Sembra più simile! Grazie –

3

Se si utilizza .NET su Windows è possibile utilizzare il servizio SMTP di IIS. Utilizzare SmtpClient e impostare il metodo di consegna nella directory di prelievo. In questa modalità, SmtpClient scriverà nella cartella di prelievo SMTP (qualcosa come c: \ inetpub \ smtp_root \ pickup) invece di provare a consegnare la posta stessa. Quella cartella è la coda dei messaggi e il servizio SMTP gestirà la consegna, i tentativi, i rapporti di mancato recapito, ecc. Molto meglio che provare a scriverlo da solo.

+3

Questo * è ancora * il modo migliore per farlo? Questo approccio richiede che IIS6 sia installato su un server, ed ultimamente è stato instabile, il servizio SMTP è morto dopo le patch, ecc. – sirtimbly