目前我正在使用导出插件在服务器上动态创建一个 excel 文件,然后通过 response.outputstream 将其发送到浏览器(由导出插件完成)。相反,我希望它创建 excel 文件,一旦完成,将其通过电子邮件发送给用户。假设我有电子邮件,有人可以给我看一些示例代码吗?
我查看了导出插件代码,它看起来像是写入响应输出流。我可以以某种方式从这个输出流中读取,创建一个文件,而不是将其存储到光盘,而是通过电子邮件发送它吗?
目前我正在使用导出插件在服务器上动态创建一个 excel 文件,然后通过 response.outputstream 将其发送到浏览器(由导出插件完成)。相反,我希望它创建 excel 文件,一旦完成,将其通过电子邮件发送给用户。假设我有电子邮件,有人可以给我看一些示例代码吗?
我查看了导出插件代码,它看起来像是写入响应输出流。我可以以某种方式从这个输出流中读取,创建一个文件,而不是将其存储到光盘,而是通过电子邮件发送它吗?
导出插件也可以在服务器中创建文件。
File exportOutput = new File("/home/mkb/test.csv")
def exportOutputStream = new FileOutputStream(exportOutput)
exportService.export('csv', exportOutputStream, User.list(), fields, labels, formatters, parameters)
一旦你得到文件,你就可以使用 grails邮件插件作为附件轻松地通过电子邮件发送它。
您想使用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
}
更多信息在这里。
希望有帮助!