You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BizTalk 2020 SMTP适配器自定义附件文件名异常求助

BizTalk 2020 SMTP适配器附件文件名问题解决

问题根源

当SMTP适配器启用“仅附加正文部分”选项时,适配器会强制将附件命名为body,仅当存在http://schemas.microsoft.com/BizTalk/2003/mime-properties#FileName属性时,提取其扩展名替换默认的无扩展名,这就是你看到body.ext的原因。该模式下适配器会忽略属性中的主文件名部分。

解决方法

方法1:修改SMTP适配器配置(推荐)

  • 取消SMTP适配器配置中的“仅附加正文部分”勾选。
  • 将“消息格式”设置为“纯文本”或“HTML”,并在“消息正文”中输入空字符串或占位文本(如单个空格)。
  • 确保你的自定义管道组件位于发送管道的FlatFileAssembler之后,且代码中设置的FileName属性(命名空间http://schemas.microsoft.com/BizTalk/2003/mime-properties)正确。
  • 此时SMTP适配器会将消息体作为附件发送,附件名完全使用你指定的OutgoingAttachedFileName值。

方法2:调整管道组件代码,设置上下文属性

替换原组件中设置BodyPart.PartProperties的逻辑,改为设置消息上下文属性:

public IBaseMessage Execute(IPipelineContext pc, IBaseMessage inmsg)
{
    // 设置MIME文件名属性到消息上下文
    inmsg.Context.Write(TargetProperty, TargetNamespace, OutgoingAttachedFileName);
    // 补充设置文件属性,增强适配器识别度
    inmsg.Context.Write("FileName", "http://schemas.microsoft.com/BizTalk/2003/file-properties", OutgoingAttachedFileName);
    return inmsg;
}
  • 配合方法1中的适配器配置修改(取消“仅附加正文部分”)即可生效。

方法3:使用MIME/SMIME编码器组件

  • 在发送管道中移除自定义组件,添加MIME/SMIME编码器组件,将其“允许非MIME消息”配置为True。
  • 通过自定义管道组件或发送端口属性,设置http://schemas.microsoft.com/BizTalk/2003/mime-properties#FileName为目标文件名。
  • 适配器配置同方法1,取消“仅附加正文部分”并设置空正文。

内容的提问来源于stack exchange,提问作者MichaelMS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:02:43