从收到的邮件消息中提取(和上传)附件

Extracting (and uploading) attachment from an incoming mail message

您知道如何从收到的邮件中提取附件吗?我在邮件中附加了 PDF 文件。这是我在控制台中看到的:

['contentType':'application/pdf; name="TransakciaMK.pdf"', 'filename':'TransakciaMK.pdf', 'disposition':'attachment', 'contentBytes':'[B@d2d9e15']

我想使用上传文件的代码

org.apache.commons.fileupload.FileItem

保存文件的服务。

  1. 这是正确的做法吗?
  2. 如果是,我如何将附件呈现为 FileItem?

已添加:

好的。我一定做错了什么。我使用 bodyPartList[2].contentBytes.getBytes() 提取 byte[]。进入名为 contentFileByte.

的变量

然后:

ByteArrayInputStream fileStream = new ByteArrayInputStream(contentFileByte)
try { docRr.putStream(fileStream) } finally { fileStream.close() }

文件已创建,但仅包含:

[B@d2d9e15

一定是字节数组转文件流的过程中某处出错了

我不知道这是否有帮助,您可能已经看到了 - 但在 EmailEcaRule.groovy 的最后,您可以看到 bodyPartList 是如何从电子邮件创建的,利用 JavaMail API。我认为您随后需要遍历 bodyPartList 以检查每个部分的 MIME 类型,以便了解您是否必须将其视为文本或附件。 - 当前,您的 emeca 规则引用的现有服务处理起来非常简单,仅从 bodyPartList[0].contentText 获取正文。我自己还没有尝试提取附件,但是根据之前完成的任务,我会从那里开始尝试执行此操作。