这是我第一次将电子邮件服务与liftweb集成
我想发送带附件的电子邮件(例如: - Documents,Images,Pdfs) 我的代码如下所示
case class CSVFile(bytes: Array[Byte],filename: String = "file.csv",
mime: String = "text/csv; charset=utf8; header=present" )
val attach = CSVFile(fileupload.mkString.getBytes("utf8"))
val body = <p>Please research the enclosed.</p>
val msg = XHTMLPlusImages(body,
PlusImageHolder(attach.filename, attach.mime, attach.bytes))
Mailer.sendMail(
From("vyz@gmail.com"),
Subject(subject(0)),
To(to(0)),
)
此代码取自LiftCookbook,它不像我的要求那样工作 它的工作,但只有附加的文件名来了(file.csv)没有数据(我上传了这个文件(gsy.docx))
最诚挚的问候 GSY
答案 0 :(得分:1)
您没有指定fileupload
类型,但假设它属于net.liftweb.http. FileParamHolder
类型,则问题是您不能只调用mkString
并期望它有任何类型fileStream
数据,因为对象中没有数据,只有一个val data = {
val os = new ByteArrayOutputStream()
IOUtils.copy(fileupload.fileStream, os)
os.toByteArray
}
val attach = CSVFile(data)
方法用于检索它(从磁盘或内存)。
最容易实现的目标是使用ByteArrayInputStream
并将数据复制到其中。我没有测试过,但下面的代码可以解决您的问题。为简洁起见,它使用Apache IO Commons来复制流,但您可以轻松地在本地执行此操作。
csv
顺便说一句,你说你正在上传一个Word(DOCX)文件,并期望在更改扩展名时它自动为CSV?除非您实际进行了一些转换,否则您只会获得一个{{1}}扩展名的DOCX文件。