2010-09-14 51 views
5

我已经浏览了Grails Mail插件(0.9版)的代码和文档,但它没有我期待的支持。您只能设置单个主体,然后提供指向静态文件的MIME附件。我需要实际将模型传递给GSP,并使其呈现HTML和纯文本版本,然后在消息中提供这些模型。这将允许非基于HTML的电子邮件客户端显示文本/纯文本部分和支持HTML以显示文本/ html部分的客户端。如何使用Grails发送包含text/plain和text/html部分的多部分电子邮件?

有人用Grails做过这个吗?有没有简单的方法来做到这一点,或者我必须修改邮件插件还是直接转到Java邮件库?

回答

5

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

我不跟Grails的工作,现在描述由于1.0版本的邮件插件本身支持多可供选择的内容,所以我没有测试了这一点的时候,但我会听取你的意见。 ;-) – 2012-04-20 21:29:12

0

我们使用标准电子邮件插件的多部分电子邮件。下面的代码片段位于服务类,这就是为什么我们使用,而不是GSP引擎标准的Groovy模板:

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

关键的一点是,“多真”出现在封闭的开始。如果你添加

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

上面的关闭,我假设你会得到一个附件的文本和HTML电子邮件。

0

似乎这是Mail插件1.0版的潜在内容,请参阅thisthis问题。看着第一个问题的补丁,我想一个HTML和文本多部分消息可以简单地这样来创建:

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

将是很酷!不知道如果/当这将被释放。

相关问题