【问题标题】:How can I send a multi-part email with text/plain and text/html parts with Grails?如何使用 Grails 发送包含 text/plain 和 text/html 部分的多部分电子邮件?
【发布时间】:2011-04-11 23:17:10
【问题描述】:

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

有人用 Grails 做过这个吗?有没有简单的方法,还是我必须修改邮件插件还是直接去Java Mail库?

【问题讨论】:

    标签: email grails mime


    【解决方案1】:

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

    【讨论】:

    • 我现在没有使用 Grails,所以我没有时间测试它,但我会相信你的话。 ;-)
    【解决方案2】:

    我们使用带有标准电子邮件插件的多部分电子邮件。以下代码 sn-p 位于服务类中,这就是我们使用标准 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 电子邮件。

    【讨论】:

      【解决方案3】:

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

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

      会很酷!不知道是否/何时发布。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-23
        • 1970-01-01
        • 2011-12-29
        • 1970-01-01
        • 2020-05-13
        相关资源
        最近更新 更多