2010-09-03 11 views
9

Estoy buscando en postmarkapp.com para manejar el envío de correo electrónico desde mi aplicación asp.net mvc 2 usando la biblioteca .net que proporcionan: biblioteca matasellos-puntosSubprocesos de fondo ASP.Net MVC para la creación y envío de correos electrónicos

En su documentation mencionan que enviar correos electrónicos con archivos adjuntos puede llevar algo de tiempo y es mejor hacerlo en un trabajo en segundo plano. Para mi aplicación, podría enviar entre 10 y 500 correos electrónicos personalizados, algunos con archivos adjuntos en un lote para mis usuarios.

  • ¿Cuál es la mejor manera de hacer esto procesamiento en segundo plano de manera no bloqueo para el usuario de administración que inició la creación y el envío de estos mensajes de correo electrónico en ASP.Net MVC?

  • ¿Qué sucede si hacen clic en "crear y enviar correos electrónicos" a 500 usuarios y cierran el navegador antes de que se complete ese proceso?

¡Gracias por la ayuda! Nuevo en ASP.Net MVC

Respuesta

17

Se podría generar un nuevo subproceso y enviar los correos en este hilo:

[HttpPost] 
[Authorize(Roles = "Administrator")] 
public ActionResult SendMails() 
{ 
    new Thread(() => 
    { 
     // Send the emails here 
    }).Start(); 
    return View(); 
} 

Si el usuario cierra el navegador este hilo seguirá funcionando hasta que se complete el dominio de aplicación o se apaga . La acción devolverá una vista inmediatamente y no se bloqueará.

También podría ser una buena idea establecer algún indicador en la base de datos de que se está ejecutando una operación de envío de correos electrónicos para que si el administrador hace clic dos veces en el botón, sus usuarios no reciban muchos correos.

Si quieres una solución más robusta, puedes echar un vistazo al MSMQ. Y here's a tutorial que debería comenzar rápidamente.

+0

Tarea> Subproceso (si .NET 4) – Necros

+2

es una mala práctica enviar un correo electrónico (abrir el hilo) en el método del controlador. ¡Podría ser una clase estática! – vlukham

+0

¿por qué es una mala práctica? –

Cuestiones relacionadas