我正在使用虚拟文件系统,我想将其中的文件附加到电子邮件中。然而,MimeBodyPart 对象只接受文件,它不能在像 jimfs 这样的默认文件系统上工作。请参阅下面的代码,当我尝试转换为文件时出现 UnsupportedOperation 异常。
public Email attach(Path file){
MimeBodyPart attachment = new MimeBodyPart()
attachment.attachFile(file.toFile())
attachments.add(attachment)
return this
}
最佳答案
由于 jimfs 文件不是真正的文件,您不能使用文件 API。
一个简单的解决方法是使用 ByteArrayDataSource ,这将复制数据。
更好的方法是编写您自己的类似于 FileDataSource 的 PathDataSource但使用 Files.newInputStream而不是 FileInputStream。然后使用附加文件:
MimeBodyPart mbp = new MimeBodyPart();
mbp.setDataHandler(new DataHandler(new PathDataSource(path)));
mbp.setFileName(path.getFileName().toString());
mbp.setDisposition(Part.ATTACHMENT);
关于java从虚拟文件系统附加文件到电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44392639/