如何使用Grails发送包含text / plain和text / html部分的多部分电子邮件?

时间:2010-09-14 02:44:18

标签: email grails mime

我查看了Grails Mail插件(版本0.9)的代码和文档,但它没有我正在寻找的支持。您只能设置单个主体,然后提供指向静态文件的mime附件。我需要实际将模型传递给GSP并让它呈现HTML和纯文本版本,然后在消息中提供这些版本。这将允许非基于HTML的电子邮件客户端显示text / plain部分和支持HTML的客户端以显示text / html部分。

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

3 个答案:

答案 0 :(得分:5)

从版本1.0开始,邮件插件本身支持多部分替代内容,如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>'
}

答案 1 :(得分:0)

我们使用标准电子邮件插件的多部分电子邮件。以下代码片段位于服务类中,这就是我们使用标准groovy模板而不是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')
        }

至关重要的是,'multipart true'出现在关闭的开头。如果你添加

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

到上面的闭包,我假设你会收到带附件的文字和HTML电子邮件。

答案 2 :(得分:0)

这似乎是Mail插件1.0版的潜在内容,请参阅thisthis问题。看看第一期的补丁,我认为可以简单地创建一个html和text multipart消息:

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

会很酷!不知道是否/什么时候会发布。