Enviamos correos electrónicos desde nuestra aplicación web ASP.NET MVC 3 Razor.¿Hay algún paquete de correo electrónico MVC que no requiera un contexto HTTP?
Actualmente estamos usando ActionMailer.NET.
He visto MvcMailer.
El problema con ambos es que necesitan un contexto Http para ejecutarse.
El problema es que quiero enviar correos electrónicos de manera asilómada. Ahora sé que se puede hacer de forma asíncrona el envío real (por ejemplo, la llamada SMTP), pero yo quiero todo el proceso de enviar un correo electrónico a ser asíncrono, por ejemplo:
public ActionResult DoSomething(Something something)
{
_db.Save(something);
Task.Factory.StartNew(() => {
new MailController().DoSomething().Send(something);
});
return RedirectToAction("Index");
}
En el método "HacerAlgo", i consultar la base de datos otra vez, hacer otras cosas, etc. ... quiero que todo esto sea asíncrono, de ahí que toda la llamada esté envuelta en una tarea, a diferencia de simplemente hacer .SendAsync()
. Espero que tenga sentido.
El ejemplo anterior es ActionMailer, y se rompe porque el contexto HTTP se ha ido en el subproceso generado.
¿Alguien sabe cómo puedo hacer que esto funcione o, alternativamente, otro paquete que no se basa en la existencia de un contexto HTTP?
No estoy seguro de por qué se requiere un contexto HTTP. No hay enrutamiento de solicitud aquí, simplemente analiza una vista que está en el sistema de archivos en HTML.
También está el original RazorEngine https: // github.com/Antaris/RazorEngine :) (inicialmente desarrollado por Antaris y yo, pero Antaris lo ha asumido por completo) – Buildstarted