В настоящее время мы проходим через концепцию создания транспортного агента, которая получена из Microsoft.Exchange.Data.Transport.Routing.RoutingAgent
. Мы используем событие OnResolvedMessage
, чтобы перенаправить электронные письма на наш внешний почтовый сервер (не Exchange-сервер). Все это прекрасно работает, и мы можем перенаправить электронные письма на внешний сервер. Тем не менее, похоже, что если электронное письмо содержит как внутреннего, так и внешнего получателя, электронное письмо будет разделено на два отдельных сообщения электронной почты и приведет к тому, что два письма отправятся на внешний почтовый сервер. Хотя два письма содержат один и тот же контент, только разные заголовки RCPT TO, это заставит внешний почтовый сервер обрабатывать один и тот же адрес электронной почты дважды, что менее желательно для нашего проекта.Транспортный агент Exchange 2013 Отправка отдельной электронной почты для внутренних и внешних получателей
Это мой первый раз, когда я создал агент транспорта, и я пытаюсь определить, есть ли какая-то настройка для сервера обмена, которая должна быть изменена, чтобы остановить электронные письма, соответствующие этим критериям, из-за разделения на несколько писем?
Основная цель нашего транспортного агента - разрешить обработку электронной почты внутренними получателями внешним сервером электронной почты, поскольку они в настоящее время будут помещены во внутренний почтовый ящик внутреннего пользователя без обработки. Это может иметь отношение к нашим разъемам отправки/получения, любые рекомендации по любым искам вокруг них будут высоко оценены. Если агент маршрутизации не является правильным решением для этой проблемы, мы открыты для других возможностей.
Отрывок нашего обработчика событий:
private void OnOnResolvedMessage(ResolvedMessageEventSource source, QueuedMessageEventArgs queuedMessageEventArgs)
{
var mailItem = queuedMessageEventArgs.MailItem;
var origSubject = mailItem.Message.Subject;
mailItem.Message.Subject = "RouteAgent: " + origSubject;
foreach (var recipient in mailItem.Recipients)
{
var newRouteDomain = new RoutingDomain("externalSendConnectorAddressSpace.com");
var dest = new RoutingOverride(newRouteDomain, DeliveryQueueDomain.UseOverrideDomain);
source.SetRoutingOverride(recipient, dest);
}
}
Есть ли способ, чтобы не иметь преобразование контента произойдет в версию отправленной на внутренние пользователь? На самом деле у нас проблемы с обработкой внутренней электронной почты пользователя. Хотя должно быть хорошо отправить более одного электронного письма, как вы уже упоминали, нам нужно, чтобы они на самом деле были одним и тем же контентом, если это было возможно. – cjablonski76
Преобразование содержимого означает, что он преобразует TNEFStream, который обычно удаленный домен не сможет понять https://technet.microsoft.com/en-us/library/bb232174(v=exchg.150).aspx.Для отправленных сообщений внутри контент не преобразуется, потому что их нет смысла. (Магазин будет преобразовывать «на лету», если конкретный клиент запросит его как POP или IMAP). В качестве отправной точки я бы предложил вам выполнить трассировку https://technet.microsoft.com/en-us/library/bb397226(v=exchg.150).aspx, это даст вам представление о том, что есть и что происходит на определенных сообщениях в конвейере –
Я просто понял, что хотел спросить, есть ли способ убедиться, что содержимое внутреннего получателя преобразовано так, чтобы оно соответствовало содержимому внешних получателей? Спасибо за всю помощь, до сих пор я не нашел правильного способа получить внутренние электронные письма для перехода на внешний сервер с тем же содержимым, что и внешние получатели. – cjablonski76