Microsoft.BizTalk.Component.MIMEException
Posted
技术标签:
【中文标题】Microsoft.BizTalk.Component.MIMEException【英文标题】: 【发布时间】:2014-05-23 18:57:45 【问题描述】:我在 Biztalk 中的 POP3 适配器有问题。在我的接收位置设置它后,一些邮件会抛出您可以在标题中看到的 MIMEException。
电子邮件仅包含一些附件。
【问题讨论】:
我们可以得到其余的异常消息吗?这可能会让我们更详细地了解问题所在。 适配器“POP3”在接收位置“ReceivePop”上接收到的消息被挂起,URI 为“POP3://###########”。错误详细信息:引发了“”类型的异常。消息 ID:CC524C02-8064-4BAB-97A2-B02F51EDEB2A 实例 ID:DA33C96B-83D8-4DC8-9C4D-5BF534DFB20A 【参考方案1】:获取电子邮件文本,这应该包含附件、电子邮件正文和一些属性。验证这封电子邮件,有很多 MIME 验证网站可用。
它将为您提供失败的 MIME 消息的行号结果。通常有些行太长,有时超过998
个字符。
示例长行是来自安装在邮件服务器上的反垃圾邮件软件的诊断。
您可以添加自定义管道解码器组件来格式化这些长行并添加 SMIME/MIME 解码器组件。确保复制 pop3 上下文属性以备不时之需。
这里有一些关于如何破解 MIME 消息的代码 sn-p
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;
【讨论】:
【参考方案2】:这是一篇博客文章,说明了相同的问题及其解决方案。希望解决方案对您有用。 "Failed to decode the S/MIME message. The S/MIME message may not be valid." when using POP adapter to process incoming emails
【讨论】:
您正在使用哪个 BizTalk 版本?你试过这个热修复吗:support.microsoft.com/kb/982634/en-us 不要复制粘贴解决方案链接。随着时间的推移,链接可能会出错。 我正在使用 2013 版本,是的,我安装了它,但同样的异常以上是关于Microsoft.BizTalk.Component.MIMEException的主要内容,如果未能解决你的问题,请参考以下文章