Exchange 2010/2013 Преобразование содержимого TransportAgent для внутренних получателей

Я пытаюсь создать TransportAgent это перенаправляет внутреннюю электронную почту на удаленный сервер для дальнейшей обработки, но электронная почта поступает во внутренний формат Microsoft TNEF (преобразование содержимого не применяется). Я хотел бы, чтобы он был в том же формате, который использовался бы, если бы электронное письмо отправлялось внешнему получателю.

Я в настоящее время использую RoutingAgent перенаправить внутренние письма на удаленный сервер. Если кто-то может объяснить, почему это происходит с точки зрения конвейера классификатора, это тоже было бы очень полезно, даже если я не могу избежать этого. Этот агент будет реализован как для Exchange 2010, так и для 2013 года, если ответ отличается в зависимости от версии Exchange.

0 ответов

Пример использования reflexion 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 });
}
Другие вопросы по тегам