Microsoft.BizTalk.Component.MIMEException

本文关键字:MIMEException Component BizTalk Microsoft | 更新日期: 2023-09-27 17:57:39

Biztalk中的POP3适配器有问题。在我的接收位置设置后,一些邮件会抛出MIMEException,你可以在标题中看到。

该电子邮件仅包含一些附件。

Microsoft.BizTalk.Component.MIMEException

这里有一篇博客文章,阐述了同样的问题及其解决方案。希望这个解决方案对你有用。"无法解码S/MIME消息。S/MIME消息可能无效。"当使用POP适配器处理传入电子邮件时,

获取电子邮件文本,其中应包含附件、电子邮件正文和一些属性。验证此电子邮件,有很多MIME验证网站可用。

它将为您提供失败的MIME消息的行号的结果。通常有些行太长,有时超过998个字符。

示例长行是安装在邮件服务器上的反垃圾邮件软件的诊断。

您可以添加自定义管道解码器组件来格式化这些长行,并添加SMIME/MIME解码器组件。确保复制pop3上下文属性,以备不时之需。

以下是一些关于如何破坏MIME消息的代码片段

public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg)
{
            System.IO.Stream st = pInMsg.BodyPart.GetOriginalDataStream();
            System.IO.StreamReader reader = new System.IO.StreamReader(st);
            var strBuilder = new StringBuilder();
            string str = string.Empty;
            while (reader.Peek() >= 0)
            {
                str  = reader.ReadLine();
                if (str.Length >= 998)                            
                   str = str.Replace(str.ToString(), System.Text.RegularExpressions.Regex.Replace(str.ToString(), "(.{" + 998 + "})", "$1" + Environment.NewLine));
                strBuilder.AppendLine(str);
            }             
            System.IO.MemoryStream m = new System.IO.MemoryStream();
            System.IO.StreamWriter writer = new System.IO.StreamWriter(m);
            writer.AutoFlush = true;
            writer.Write(strBuilder.ToString());
            m.Position = 0;
            pInMsg.BodyPart.Data = m;                
            reader.Close();
            return pInMsg;                    
}