Outlook中BizTalk SMTP发邮件附件名称显示异常(编码相关问题)
调试与修复方案
1. 修正ContentTransferEncoding配置错误
ContentTransferEncoding属性的有效值为base64、7bit、quoted-printable这类标准MIME传输编码字符串,而非Encoding.UTF8编码类对象。附件内容已经是base64编码,将该属性赋值改为字符串"base64"即可。
2. 开启MIME组件UTF-8头支持
进入BizTalk发送管道的MIME/SMIME编码器配置界面,开启Enable UTF-8 for envelope headers选项,同时确认Content transfer encoding设置为Base64,该配置默认会对非ASCII文件名做兼容Outlook的RFC2047标准编码。
3. 移除无效编码逻辑
现有HtmlEncode方法未做任何有效转换,且Outlook对附件文件名的解析遵循MIME编码规范,和HTML编码无关,不需要做HTML转义处理,相关逻辑可直接删除。
4. 手动编码文件名(兜底方案)
如果上述配置修改后仍有问题,可以手动对文件名做RFC2047标准编码后再赋值给FileName属性,示例代码如下:
string rawFileName = item.FileName + item.Extension; string encodedFileName = $"=?utf-8?B?{Convert.ToBase64String(Encoding.UTF8.GetBytes(rawFileName))}?="; msgPart.PartProperties.Write("FileName", "http://schemas.microsoft.com/BizTalk/2003/mime-properties", encodedFileName);
5. 验证SMTP适配器配置
检查BizTalk SMTP发送端口的配置,确认Body charset设置为UTF-8,不要使用默认的系统编码。
内容的提问来源于stack exchange,提问作者Emperor 2052
相关产品推荐
相关产品推荐

