【发布时间】:2011-08-06 08:33:27
【问题描述】:
情况是这样的:
首先,我们在内存中生成一个文件,我们可以得到一个InputStream对象。
其次,InputStream 对象必须作为电子邮件的附件发送。语言是Java,我们使用Spring来发送邮件。
我找到了很多信息,但我找不到如何使用InputStream 发送电子邮件附件。我尝试这样做:
InputStreamSource iss= new InputStreamResource(new FileInputStream("c:\\a.txt"));
MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
message.addAttachment("attachment", iss);
但我得到一个例外:
传入的资源包含一个开放流:无效参数。邮件 需要一个 InputStreamSource 为每个创建一个新的流 打电话。
【问题讨论】:
-
你做到了吗?我有同样的问题。这不太有意义,因为 InputStreamResource 是新的并且以前没有使用过,不知道为什么 Spring 会抛出该异常?!
-
@Stef 你做到了吗?到目前为止,我使用 ByteArrayOutputStream 管理的内容比: message.addAttachment(fileName, new ByteArrayResource(byteArrayOutputStream.toByteArray()));但是由于某种原因,它在 ide 上作为开发配置文件运行时起作用,而不是在作为 java -jar target/projectName.jar 构建和运行时起作用。我得到一个 com.sun.mail.smtp.SMTPSenderFailedException: 550 Request failed;邮箱不可用
-
对不起埃德蒙,我不记得了。我猜我一定有,但我什至不记得这是在哪个项目中 :)
-
InputStreamResource 实现总是在方法 isOpen() 上返回 true。这就是问题所在。
标签: java spring email inputstream