
























本文转载自:https://www.ibm.com/docs/en/integration-bus/10.0?topic=domain-mime-messages
MIME 消息由数据和元数据组成。MIME 元数据由 HTTP 样式的标头和 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 属性的示例:
SET OutputRoot.Properties.ContentType = 'text/plain';
MIME 域不强制执行完整的 MIME 规范。因此,您可以处理在其他应用程序中可能无效的消息。例如,MIME 解析器不坚持使用MIME-Version标头。MIME 解析器强加了以下约束:
<CR><LF>。Content-Type: Multipart/Related; boundary=MIME_boundary; type=text/xml
MIME-Version: 1.0 (Generated by XYZ)
text/xml和multipart/related。解析器不验证子类型。Content-Type 值后面可以跟一个或多个用分号分隔的参数。<CR><LF>。分隔消息的示例是:
--MIME_boundary
message data
--MIME_boundary
message data
--MIME_boundary--
MIME 解析器主要用于多部分 MIME 消息。但是,解析器也处理一些特殊情况:
S/MIME 是发送安全电子邮件的标准。S/MIME 具有multipart/signed的外层 Content-Type,带有参数protocol和mialg,用于定义用于加密消息的算法。一个或多个 MIME 部分可以具有编码内容。这些部分具有 Content-Type 值,例如application/pkcs7-signature和base64的 Content-Transfer-Encoding 。MIME 域不会尝试解释或验证消息是否已签名。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。