gpt4 book ai didi

c# - 内部收件人的 Exchange 2010/2013 TransportAgent 内容转换

转载 作者:太空宇宙 更新时间:2023-11-03 15:26:21 25 4
gpt4 key购买 nike

我正在尝试创建一个 TransportAgent 将内部电子邮件重新路由到远程服务器以进行进一步处理,但电子邮件以 Microsoft 的内部 TNEF 格式发送(未应用内容转换)。如果电子邮件发送给外部收件人,我希望它采用相同的格式。

我目前正在使用 RoutingAgent 将内部电子邮件重新路由到远程服务器。如果有人可以根据分类器的管道解释为什么会发生这种情况,那也会非常有帮助,即使我无法避免。此代理将针对 Exchange 2010 和 2013 实现,以防答案因 Exchange 版本而异。

最佳答案

使用反射 ItemConversion.convertAnyMimeToMimeMethod 方法的示例

var mimeDocument = new MimeDocument();
using (var mimeDocumentLoadStream = mimeDocument.GetLoadStream())
{
ConvertAnyMimeToMimeMethod(email.Message.MimeDocument, mimeDocumentLoadStream);
}
var convertedEmail = EmailMessage.Create(mimeDocument);


private static void ConvertAnyMimeToMimeMethod(MimeDocument documentIn, Stream mimeOut)
{
var assembly = Assembly.Load("Microsoft.Exchange.Data.Storage");
var outboundConversionOptionsType = assembly?.GetType("Microsoft.Exchange.Data.Storage.OutboundConversionOptions");
var outboundOptionsConstructor = outboundConversionOptionsType?.GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public,
null,
new[] { typeof(string) },
null);
var outboundOptions = outboundOptionsConstructor?.Invoke(new object[] { "OurDomain.tld" });
var itemConversionType = assembly?.GetType("Microsoft.Exchange.Data.Storage.ItemConversion");
var convertAnyMimeToMimeMethod = itemConversionType?.GetMethod(
"ConvertAnyMimeToMime",
BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static,
null,
new[] { documentIn.GetType(), mimeOut.GetType(), outboundOptions?.GetType() },
null);

convertAnyMimeToMimeMethod.Invoke(null, new[] { documentIn, mimeOut, outboundOptions });
}

关于c# - 内部收件人的 Exchange 2010/2013 TransportAgent 内容转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35164622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com