2012-04-09 15 views
8

Quiero usar MvcMailer en una biblioteca de clases, que esencialmente sería mi ventanilla única para redactar y enviar correos electrónicos para mi solución. Pensé que para eso se diseñó MvcMailer, pero parece que no puede encontrar ninguno de mis archivos .cshtml, supongo que los espera en mi proyecto de inicio.¿Se puede usar MvcMailer en una biblioteca de clases?

¿Hay alguna forma de que MvcMailer esté 100% separado de mis otros proyectos?

Gracias.

Respuesta

1

Esto no es posible de acuerdo a la documentación MvcMailer https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide (extraer más adelante), tal vez usted puede tener un proyecto web independiente que su única finalidad es el envío de mensajes de correo electrónico y sólo aceptará peticiones de su aplicación

envío de correo electrónico desde un proceso en segundo plano ¿Necesita enviar correos electrónicos desde un proceso en segundo plano? Sí tienes razón. No desea bloquear su ciclo de solicitud/respuesta para que se envíe ese correo electrónico de notificación. En cambio, lo que desea es un proceso en segundo plano que lo haga por usted, incluso si se envía después de un breve retraso. Esto es lo que puede hacer:

Guarde los datos relacionados con su correo electrónico en una base de datos. Cree un servicio web REST/SOAP que envíe los correos electrónicos. Esto asegurará que su Mailer tenga acceso al HttpContext, que es esencial para que el marco central ASP.NET MVC funcione correctamente. Por ejemplo, para encontrar sus puntos de vista, producir URL y realizar autenticación/autorización. Crea una aplicación simple que llame al servicio web. Puede ser una aplicación de servicio de Windows o una aplicación ejecutable que se ejecuta en la tarea Programada de Windows. Es probable que una versión futura de MvcMailer tenga soporte para esto. Pero es difícil por dos razones:

MailMessage no se puede serializar de fábrica y tiene una gran cantidad de campos complejos y asociaciones. El marco ASP.NET núcleo todavía necesita HttpContext :(

+1

Gracias por publicar. Esta es una verdadera lástima, porque esa es una característica muy deseable. Había encontrado un puesto similar por lo que dice que no es posible, pero me preguntaba si Alguien había encontrado una solución alternativa. Después de perder unas pocas horas, parece que no hay una solución fácil. – smdrager

+3

Parece que puede usar ActionMailer.Net.Standalone para hacer esto, ya que usa RazorEngine. Por lo que puedo decir, no tiene ninguna solución. requisito para HttpContext y se puede utilizar en un proceso/conjunto totalmente independiente. –

+1

Uso de ActionMailer.Net independiente: http://geeksharp.com/2011/07/06/actionmailer-0-6-released/ –

Cuestiones relacionadas