第 223 章 MIME 多部件数据格式

作为 Camel 2.17 版提供

此数据格式可以将带有附件的 Camel 消息转换为 Camel 消息,以将 MIME-Multipart 消息作为消息正文(无附件)。

这种情况的用例是让用户通过不支持附加的端点(例如,作为特殊协议实施)发送 MIME-multipart (通过 HTTP 端点发送 MIME-multipart),或者作为一种隧道解决方案(例如 camel-jms)不支持附件,而是通过附件(通过 HTTP 端点向 MIME)发送 MIME-multipart,或作为一种隧道解决方案(例如,因为 camel-jms 不支持附件),但通过附件发送 MIME-multipart,或作为一种隧道解决方案(例如 camel-jms)不支持附加附件,而是通过附件(通过 HTTP 端点发送 MIME-multipart),或作为一种隧道解决方案(例如 camel-jms)支持附件,而是通过附件(通过 HTTP 端点发送 MIME),或作为一种隧道解决方案(例如 camel-jms-jms)支持附件,而是通过 HTTP 端点发送 MIME-multipart,或作为一种隧道解决方案(例如 camel-jms)不支持附件,但通过 HTTP 端点发送 MIME-multipart,或作为一种隧道解决方案(例如 camel-jms)不支持附加内容,而是通过附件(通过 HTTP 端点发送 MIME)或作为隧道解决方案(例如 camel-jms)不支持附加附件,但通过附件将消息聚合到 MIME/Multi-Multippart 发送到 JMS 队列,从 JMS 队列接收消息并再次进行恢复(与附件相关的消息正文)。

mime-multipart 数据格式的 marshal 选项会将带有附件的消息转换为 MIME-Multipart 消息。如果将参数 "multipartWithoutAttachment" 设为 true,它还会在不附加单个部分的情况下将消息过滤至多部分消息,如果 参数设为 false,它将仅保留该消息。

mulitpart 的 MIME 标头设置为 "MIME-Version",并将 "Content-Type" 设置为 camel 标头到邮件。如果将参数 "headersInline" 设为 true,它也会在任何情况下创建一个 MIME 多部件信息。
另外,多部分的 MIME 标头作为邮件正文的一部分编写,而不是作为 camel 标头。

mime-multipart 数据格式的 unmarshal 选项会将 MIME-Multipart 消息转换为带有附件消息的 camel 消息,并单独保留其他消息。MIME-Multipart 消息的 MIME 标头必须设置为 Camel 标头。只有在将 "Content-Type" 标头设置为"multipart"类型时,才会进行解压缩。如果选项"headersInline"设为 true,则正文将始终解析为 MIME 消息。如果消息正文是流,并且未启用流缓存,则消息正文中实际上不是带有 MIME 标头的 MIME 消息。最多 Camel 版本 2.17.1 时将发生所有不包含 MIME 多部件消息的消息正文,而不考虑正文类型和流缓存设置。

223.1. 选项

MIME 多部件数据格式支持 6 选项,它们如下所列。

Name默认Java 类型描述

multipartSubType

mixed

字符串

指定 MIME 多部分的子类型。默认为混合。

multipartWithoutAttachment

false

布尔值

定义没有附加的消息是否被分到 MIME 多部分(只有一个正文部分)。默认为 false。

headersInline

false

布尔值

定义 MIME-Multipart 标头是邮件正文(true)的一部分,还是设置为 Camel 标头(false)。默认为 false。

includeHeaders

 

字符串

一个正则表达式,定义哪些 Camel 标头也作为 MIME 标头包含在 MIME 多部分中。这只有在将 headersInline 设为 true 时才可以正常工作。默认为不包含任何标头

binaryContent

false

布尔值

定义 MIME 多部分中的二进制部分的内容是否为二进制(true)或 Base-64 编码(false)默认为 false。

contentTypeHeader

false

布尔值

如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。