2010-07-12 20 views
5

En una aplicación ASP.NET MVC, ¿cómo se debe manejar el envío de correos electrónicos? He estado pensando en esto, y realmente me gusta la idea de manejarlo de una manera MVC (es una aplicación MVC, después de todo)ASP.NET MVC: ¿cómo se debe manejar el correo electrónico?

Lo que quiero decir es que el correo electrónico que se entrega al el usuario es realmente solo una vista que debe tener un modelo pasado. Esto genera algunas preguntas: ¿cómo deberíamos entregar vistas tanto al buscador solicitante como a un servidor SMTP al mismo tiempo, cuando se ejecuta una acción? ¿El marco tiene instalaciones para apoyar esto? Si no, ¿hay alguna publicación/guía de un tercero para este tipo de funcionalidad?

Las alternativas al tratamiento de enviar de una manera MVC correo electrónico son:

  • correo electrónico enviando código aparece en los métodos de acción del controlador.
  • El envío de correo electrónico es un comportamiento de los objetos del Modelo.

¿Cómo maneja el envío de correos electrónicos en sus aplicaciones ASP.NET MVC? ¿Qué piensas sobre un enfoque orientado a MVC?

Respuesta

6

Por lo general, cuando necesita un nuevo tipo de resultado, debe programar un nuevo objeto MyResult que heredaría de ActionResult. De esta manera, su método de acción sería libre de elegir el tipo de resultado que se indicó, y el motor de visualización simplemente llamaría al método ExecuteResult() en el nuevo tipo de resultado, que mantendría la lógica de cómo representar los datos.

Sin embargo, como lo que hace parece ser que solo desea obtener HTML de una Vista y enviarlo por correo electrónico (es el mismo tipo de resultado que para el navegador web), the answers to this question debe cubrirlo en profundidad. Tenga en cuenta que las respuestas con el código para MVC 2.0 son la mejor manera de hacerlo, ya que agregaron la funcionalidad "renderizar una vista a una cadena" en la segunda versión debido a la demanda popular.

Su pregunta es buena, ya que recomendaría encarecidamente un enfoque MVC para cualquier salida de su programa. Enviar una vista al correo electrónico no es conceptualmente diferente a enviar una vista a otro tipo de salida (PDF, navegador móvil, SMS) y al crear salidas de vista conectables, tiene una manera fácil de admitir la expansión del uso de su aplicación.

0

Es una pregunta interesante. Puede intentar crear un ActionFilterAttribute personalizado e implementar el método OnResultExecuted. Desde allí, debería poder obtener el html de salida y enviarlo por correo electrónico.

Así que todo lo que tendría que hacer es decorar los métodos de acción con su atributo personalizado y llamar a la vista enviaría la salida al navegador y también la enviaría por correo electrónico.

+0

Dudo que casi ni me gustaría enviar por correo electrónico exactamente lo mismo que se envía al navegador. –

Cuestiones relacionadas