如何发送带有附件的邮件?
李小翔
2015-08-08 10:16

内容列表

供稿人：王劲松
Toolkit、FWK 中分别集成了 mail、asynchronous-mail 插件，用来实现邮件发送功能，且后者依赖前者，可将邮件保存在数据库中实现定期发送、失败重试、发送审计等功能。
通过他们发送带有附件的邮件，代码示例如下：
def asynchronousMailService
File att = new File(”....../这是个附件.doc”)
if ( !att.exists() ) return
asynchronousMailService.sendMail { 
    to          ”zhangsan@abc.com”
    subject     ”邮件标题”
    html        ”<h1>HTML格式的邮件正文</h1>....”
    attachBytes att.getName(), FileUtils.fileMimeType(att.getName()), att.readBytes()
} 
其中，attachBytes 就是添加邮件附件（实际会调用 AsynchronousMailMessageBuilder 中的 attachBytes(String name, String mimeType, byte[] content)，此处注意要应用 File 类型的对象来进行相应的操作，mimetype 可调用FileUtils.fileMimeType(file.getName()) 来获取）。
此外，邮件标题、正文可以通过消息模板来实现自定义与国际化（messageTemplateService.getMessage）。
更多参考：
https://grails.org/plugin/mail
https://grails.org/plugin/asynchronous-mail