2011-06-29 18 views
6

En un sitio web, algunas veces enviar un correo electrónico demora unos segundos, así que tengo que enviar un correo electrónico desde otro hilo, para no esperar hasta que se envíe el correo electrónico.¿Está bien enviar correos electrónicos de otro hilo como este?

Encontré esto answer en stackoverflow, ¿Está bien hacerlo de esta manera, en caso de que envíe solo un correo electrónico por solicitud?

¿O hay otra forma estándar de hacerlo?

+1

¿Por qué no utilizar SmtpClient.SendAsync? – adrianm

Respuesta

4

Si es posible, debe configurar un servidor SMTP local que solo escuche en la dirección de bucle invertido (127.0.0.1) ya que esto es exactamente para lo que sirven las colas de correo. Puede configurar su servidor SMTP para transmitir a través de su servidor de correo saliente real para que no tenga problemas con SPF tratando su correo como correo no deseado.

De esta manera su aplicación puede poner en cola rápidamente el correo saliente y estar felizmente y puede estar razonablemente seguro de que el mensaje finalmente se entregará incluso en caso de carga pesada, problemas de red o incluso un bloqueo.

2

Engendrar nuevos hilos desde el interior de un controlador de solicitud es potencialmente peligroso: si obtiene un aumento en el tráfico, es posible que cree suficientes hilos que empeorarán el pico.

mejor sería entregar fuera el envío a otro proceso a través de una herramienta como beanstalkd u otra cola de mensajes de correo o utilizar un proporcionado por el sistema mail mando (orden de mi sistema Linux mail(1) puede poner en cola un mensaje de correo electrónico en .07 segundos, adecuado para cargas de correo moderadas).

Calcule la cantidad de tráfico que usted espera. Si se trata de una herramienta interna que solo utilizarán unas pocas docenas de personas, es probable que esté generando nuevos hilos. Si está expuesto al gran mundo malo, recomendaría un mecanismo de colas más robusto que tendrá menos impacto en los recursos del sistema.

Cuestiones relacionadas