2012-01-30 10 views
11

¿Alguien ha visto una cola de correo electrónico .net?.Net SMTP Queue

Quiero ser capaz de especificar el servidor SMTP para enviar, informar problemas y volver a intentar correos electrónicos si es necesario o solicitado.

Idealmente me gustaría algo de código abierto.

+1

Hola Fran, ¿con qué solución terminaste aquí por favor? –

Respuesta

1

Pago y envío System.Net.Mail, http://msdn.microsoft.com/en-us/library/dk1fb84h.aspx. En particular, desea ver MailMessage y SmtpClient.

EDITAR

// 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

Gracias, soy bastante familiar con el envío de correos electrónicos, pero quiero poder pasar el envío de un correo electrónico a otro servicio para que el usuario no tenga que esperar a que se envíe el correo electrónico y los errores no t detener el hilo principal. –

+0

¿Qué tal si enviamos a otro usando TPL, http://msdn.microsoft.com/en-us/library/dd537609.aspx. Ver mi edición al crear una tarea en otro hilo. –

+0

¡Eso se parece más a eso! Gracias –

3

Si está utilizando .NET en Windows puede utilizar el servicio IIS SMTP. Use SmtpClient y configure el método de entrega para el directorio de recogida. En este modo, SmtpClient escribirá en la carpeta de recogida de SMTP (algo así como c: \ inetpub \ smtp_root \ pickup) en lugar de intentar entregar el correo. Esa carpeta es la cola de mensajes y el servicio SMTP se encargará de la entrega, el reintento y los NDR, etc. Mucho mejor que tratar de escribirlo usted mismo.

+3

¿Es esta * todavía * la mejor manera de lograr esto? Este enfoque requiere que IIS6 esté instalado en un servidor, y últimamente ha estado escaso, el servicio SMTP muere después de parches, etc. – sirtimbly