2011-01-19 24 views
8

Cuando los correos electrónicos se representan a partir de plantillas, las plantillas se buscan en "grails_app/puntos de vista:"¿Cómo externalizar las plantillas de correo GSP con Grails?

mailService.sendMail { 
    from sender 
    to recepient.email 
    subject "Don't forget" 
    body (view: "/emails/reminder", 
     model:[recepient: recepient, document: document]) 
} 

¿Cómo puedo poner las plantillas de correo fuera de la aplicación (archivo de la guerra) en el sistema de archivos?

Respuesta

8

Hay dos opciones:

  1. tienda de sus plantillas como texto en la base de datos, y generar el código porquería por defecto para actualizarlos. A continuación, modificará el código de correo electrónico para extraer los datos de la base de datos utilizando objetos de dominio.
  2. Almacene las plantillas como cadenas en un archivo de configuración de Groovy. Groovy puede usar archivos de configuración externos que se pueden editar por separado de la aplicación empaquetada. Vea this blog post para más detalles.

Una vez que tenga su cadena, puede usar el motor GSP desde un controlador Grails con cualquier cadena arbitraria para crear una vista. Vea this blog post para más detalles.

En resumen, debe almacenar su plantilla como una cadena utilizando una de las opciones enumeradas y luego usar el motor Grails GSP para crear la vista una vez que haya recuperado la cadena de la plantilla.

+1

¿Pero cómo renderizo una cadena GSP (dentro de un servicio)? – deamon

+0

Ver respuesta actualizada. – Jared

+0

@deamon: Creo que la respuesta de Jared es suficiente. Pero esta es la idea que debe quedar clara: la entrada para "cuerpo" en la función sendMail es una cadena simple. Solo necesita pasar la cadena (quizás con decoración HTML) en "cuerpo". Tenga en cuenta que si desea enviar un archivo HTML, debe activar otras opciones relevantes. –

Cuestiones relacionadas