2010-09-14 15 views
5

He revisado el código y la documentación del plugin de Grails Mail (versión 0.9) y no tengo la compatibilidad que estoy buscando. Solo puede establecer un solo cuerpo y luego proporcionar un archivo adjunto mime que apunta a un archivo estático. Necesito pasar un modelo en un GSP y hacer que presente las versiones en HTML y texto sin formato y luego tener ambas disponibles en el mensaje. Esto permitirá que los clientes de correo electrónico no basados ​​en HTML muestren la parte de texto/normal y los clientes que admiten HTML para mostrar la parte de texto/html.¿Cómo puedo enviar un correo electrónico de varias partes con texto/texto simple y texto/html con Grails?

¿Alguien ha hecho esto con Grails? ¿Hay una manera fácil de hacerlo, o tengo que modificar el complemento de correo o simplemente ir directamente a la biblioteca de Java Mail?

Respuesta

5

Desde la versión 1.0 del plug-in de correo soporta de forma nativa el contenido alternativo de varias partes como se describe en http://jira.grails.org/browse/GPMAIL-37

mailService.sendMail { 
    multipart true 
    to <recipient> 
    subject <subject string> 
    text 'my plain text' 
    html '<html><body>my html text</body></html>' 
} 
+0

no estoy trabajando con Grails en este momento, así que no tengo el tiempo para probar esto, pero yo Aceptaremos tu palabra. ;-) –

0

Utilizamos correo electrónico de varias partes con el complemento de correo electrónico estándar. El siguiente fragmento de código se encuentra en una clase de servicio, es por eso que estamos usando plantillas maravilloso estándar en lugar del motor gsp:

 Template template = groovyPagesTemplateEngine.createTemplate(<templatename>) 
     Writable emailBody = template.make(<data model as map>) 
     StringWriter bodyWriter = new StringWriter() 
     emailBody.writeTo(bodyWriter) 

     String xml = <some xml> 

     mailService.sendMail { 
      multipart true 
      to <recipient> 
      subject <subject string> 
      body bodyWriter 
      attachBytes "filename.xml", "text/xml", xml.getBytes('UTF-8') 
     } 

Lo crucial es que 'multiparte verdadero' aparece al comienzo del cierre. Si agrega

html '<b>Hello</b> World' 

al cierre anterior, supongo que obtendrá un correo electrónico de texto y html con un archivo adjunto.

0

Parece que este es el contenido potencial de la versión 1.0 del complemento de correo, vea this y this problema. En cuanto a la revisión de la primera edición, creo que un mensaje de varias partes html y texto, simplemente se podría crear de esta manera:

mailService.sendMail { 
    multipart true 
    to <recipient> 
    subject <subject> 
    dualBody(template:<template>, model:<model>) 
} 

sería muy bien! Sin embargo, ni idea de cuándo se lanzará esto.

Cuestiones relacionadas