2010-09-14 8 views
5

Ich habe den Code und die Dokumentation für das Grails Mail-Plugin (Version 0.9) durchgesehen und es hat nicht die Unterstützung, nach der ich suche. Sie können nur einen einzelnen Körper festlegen und dann einen Mime-Anhang bereitstellen, der auf eine statische Datei verweist. Ich muss ein Modell tatsächlich in ein GSP übergeben und es sowohl die HTML- als auch die Klartextversionen rendern lassen und dann beide in der Nachricht verfügbar machen. Dadurch können nicht-HTML-basierte E-Mail-Clients den text/plain-Teil und Clients, die HTML unterstützen, anzeigen, um den text/html-Teil anzuzeigen.Wie kann ich eine mehrteilige E-Mail mit text/plain und text/html Teilen mit Grails versenden?

Hat jemand das mit Grails getan? Gibt es einen einfachen Weg, oder muss ich das Mail-Plugin ändern oder direkt zur Java Mail-Bibliothek gehen?

Antwort

5

Seit der Version 1.0 der Mail-Plugin nativ mehrt alternative content unterstützt wie in http://jira.grails.org/browse/GPMAIL-37 beschrieben

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

Ich bin nicht mit Grails jetzt arbeiten, also habe ich nicht die Zeit, dies zu testen, aber ich Ich werde dein Wort dafür nehmen. ;-) –

0

Wir verwenden mehrteilige E-Mail mit dem Standard-E-Mail-Plugin. Der folgende Codeausschnitt wird in einer Serviceklasse befindet, deshalb haben wir Standard-groovy Templat statt der gsp-Engine sind:

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

Entscheidend ist, dass ‚mehrteiliger wahr‘ zu Beginn des Verschlusses erscheint. Wenn Sie

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

zur Schließung oben hinzuzufügen, gehe ich davon aus Sie einen Text und HTML-E-Mail mit einem Anhang erhalten werden.

0

Scheint so, als wäre dieser potentieller Inhalt der Version 1.0 des Mail-Plugins, siehe this und this Problem. Mit Blick auf dem Patch der ersten Ausgabe, ich denke, eine HTML und Text mehrteilige Nachricht einfach so erstellt werden kann:

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

wäre ziemlich cool! Keine Ahnung, ob/wann das veröffentlicht wird.