4

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

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

4

2 回答 2

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邮件插件作为附件轻松地通过电子邮件发送它。

于 2013-10-03T19:01:49.813 回答
2

您想使用Grails Mail DSLattach(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
}

更多信息在这里

希望有帮助!

于 2013-10-04T17:00:33.630 回答