如何使用 InputStream 和 Spring 发送带附件的电子邮件?

新手上路,请多包涵

情况是这样的:

首先我们在内存中生成一个文件,我们可以得到一个 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);

但我得到一个例外:

传入的资源包含一个打开的流:参数无效。 JavaMail 需要一个为每次调用创建新流的 InputStreamSource。

原文由 kaka2008 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 858
1 个回答

对于 在内存 中生成的文件,您可以使用 ByteArrayResource 。只需使用 Apache Commons IO 库中的 IOUtils 转换您的 InputStream 对象。

这很简单:

 helper.addAttachment("attachement",
new ByteArrayResource(IOUtils.toByteArray(inputStream)));

原文由 ptr07 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题