使用grails导出插件的电子邮件文件

时间:2013-10-02 22:31:41

标签: grails export-to-excel

目前我正在使用导出插件在服务器上动态创建一个excel文件,然后通过response.outputstream将其发送到浏览器(由导出插件完成)。相反,我想要它创建excel文件,一旦完成,通过电子邮件发送给用户。假设我有电子邮件可以有人给我看一些示例代码吗?

我查看了导出插件代码,它看起来像是写入响应输出流。我可以以某种方式读取此输出流,创建一个文件,而不是将其存储到光盘,而只是通过电子邮件发送它?

2 个答案:

答案 0 :(得分:4)

导出插件也可以在服务器中创建文件。

File exportOutput = new File("/home/mkb/test.csv")
def exportOutputStream = new FileOutputStream(exportOutput)
exportService.export('csv', exportOutputStream, User.list(), fields, labels, formatters, parameters)

一旦您收到该文件,您就可以使用grails mail plugin作为附件轻松发送电子邮件。

答案 1 :(得分:2)

您想在Grails Mail DSL中使用attach(String fileName, String contentType, InputStreamSource source)方法。这使您可以在内存中执行所有操作而无需将文件写入光盘。

import org.springframework.core.io.ByteArrayResource
...

OutputStream outputStream = new ByteArrayOutputStream()
exportService.export(type, outputStream, objects, fields, labels, formatters, parameters)
InputStreamSource inputStream = new ByteArrayResource(outputStream.bytes)  //copy output stream to input stream

sendMail {
   mutipart true
   to "someone@org.com"
   attach "yourfile.txt", "text/plain", inputStream
}

更多信息here

希望有所帮助!