2010-09-14 10 views
5

Ho esaminato il codice e la documentazione per il plugin Grails Mail (versione 0.9) e non ha il supporto che sto cercando. È possibile solo impostare un singolo corpo e quindi fornire un allegato mime che punta a un file statico. Devo passare effettivamente un modello a un GSP e renderlo sia in versione HTML sia in testo semplice e poi avere entrambi disponibili nel messaggio. Ciò consentirà ai client di posta elettronica non basati su HTML di visualizzare la parte text/plain ei client che supportano l'HTML per visualizzare la parte text/html.Come posso inviare un'e-mail multiparte con parti text/plain e text/html con Grails?

Qualcuno ha fatto questo con Grails? C'è un modo semplice per farlo, o devo modificare il plugin di posta o semplicemente andare direttamente alla libreria di Java Mail?

risposta

5

A partire dalla versione 1.0 del plugin di posta supporta nativamente contenuti alternativi multipart come descritto nel 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

non sto lavorando con Grails in questo momento, quindi non ho il tempo per testare questo fuori, ma io Prenderò la tua parola per questo. ;-) –

0

Utilizziamo e-mail multipart con il plug-in standard di posta elettronica. Il seguente frammento di codice si trova in una classe di servizio, è per questo che stiamo usando template groove standard invece del motore SPG:

 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') 
     } 

La cosa cruciale è che 'multipart vero' compare all'inizio della chiusura. Se si aggiunge

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

per la chiusura sopra, presumo otterrete un messaggio di testo e e-mail con un allegato.

0

Sembra che questo sia il potenziale contenuto della versione 1.0 del plugin Mail, vedere this e this. Guardando la patch del primo numero, credo che un messaggio multipart HTML e testo potrebbe semplicemente essere creato in questo modo:

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

sarebbe piuttosto fresco! Non so se/quando verrà rilasciato.

Problemi correlati