【问题标题】:Extracting (and uploading) attachment from an incoming mail message从收到的邮件消息中提取(和上传)附件
【发布时间】:2016-12-14 23:10:16
【问题描述】:

您对如何从收到的邮件中提取附件有任何想法吗?我在邮件中附加了 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() 提取字节 []。放入名为 contentFileByte 的变量中。

然后:

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

创建了一个文件,但它只包含:

[B@d2d9e15

在将字节数组转换为文件流的过程中一定有错误。

【问题讨论】:

  • 我没有任何示例代码,因此不会写出官方答案,但一般来说,您不会为此使用 o.a.c.fileupload.FileItem 。这将作为您可以存储的字节 [] 或直接存储。
  • 试图进一步移动,在上面添加了详细信息。

标签: moqui


【解决方案1】:

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

【讨论】:

  • 谢谢,罗南。我就是这样做的。我扩展了 groovy 文件中的代码。我调用了一个服务,它将内容保存在 makeBodyPartList 过程中的迭代器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-23
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
相关资源
最近更新 更多