本文转载自:https://www.ibm.com/docs/en/integration-bus/10.0?topic=domain-mime-messages
MIME 消息
MIME 消息由数据和元数据组成。MIME 元数据由 HTTP 样式的标头和 MIME 边界分隔符组成。
MIME 标头
每个标头都是一行上以冒号分隔的名称-值对。ASCII 序列<CR><LF>
终止该行。这些标题的序列称为标题块,以空行结尾:<CR><LF><CR><LF>
。此 HTTP 样式中的任何标头都可以出现在 MIME 文档中。MIME 标准头字段中描述了一些常见的 MIME 头。
内容类型
必须存在的唯一标头是Content-Type标头。此标头指定消息中的数据类型。如果 Content-Type 值以multipart
开头,则消息是多部分 MIME 消息。对于多部分消息,Content-Type 标头还必须包含一个边界属性,该属性给出用于分隔消息部分的文本。每个 MIME 部分都有自己的 Content-Type 字段,用于指定该部分中数据的类型。这也可以是多部分的,它允许嵌套多部分消息。具有任何其他 Content-Type 值的 MIME 部分将作为 BLOB 数据处理。
如果 MIME 文档通过 HTTP 发送,则 Content-Type 标头出现在 HTTP 标头块中,而不是 MIME 消息正文中。因此,集成节点将 Content-Type 标头的值作为逻辑树的Properties文件夹中的ContentType 属性进行管理。这允许 MIME 解析器获取通过 HTTP 接收的 MIME 文档的 Content-Type 值。如果您需要创建新的 MIME 树或修改 Content-Type 的值,请使用 MIME 域中的 ContentType 属性设置 Content-Type 值。如果直接在 MIME 树或 HTTP 树中设置 Content-Type 值,则此值可能会被忽略或使用不一致。以下 ESQL 是如何设置集成节点 ContentType 属性的示例:
解析
MIME 域不强制执行完整的 MIME 规范。因此,您可以处理在其他应用程序中可能无效的消息。例如,MIME 解析器不坚持使用MIME-Version标头。MIME 解析器强加了以下约束:
多部分 MIME 的特殊情况
MIME 解析器主要用于多部分 MIME 消息。但是,解析器也处理一些特殊情况:
- 多部分 MIME,只有一个部分。MIME 部分的逻辑树照常保存 Content-Type 和其他信息,但附件的 Data 元素为空。
- 单部分 MIME。对于单部分 MIME,逻辑树没有 Parts 子项。MIME 树的最后一个子元素是数据元素。Data 元素是包含消息数据的 BLOB 的父元素。
- 没有内容的 MIME 部分。
安全 MIME (S/MIME)
S/MIME 是发送安全电子邮件的标准。S/MIME 具有multipart/signed的外层 Content-Type,带有参数protocol和mialg,用于定义用于加密消息的算法。一个或多个 MIME 部分可以具有编码内容。这些部分具有 Content-Type 值,例如application/pkcs7-signature和base64的 Content-Transfer-Encoding 。MIME 域不会尝试解释或验证消息是否已签名。