我们目前正在通过概念验证来创建一个从Microsoft.Exchange.Data.Transport.Routing.RoutingAgent
. 我们使用该OnResolvedMessage
事件将电子邮件重新路由到我们的外部电子邮件服务器(非 Exchange 服务器)。这一切都很好,我们可以将电子邮件重新路由到外部服务器。但是,如果一封电子邮件同时包含内部和外部收件人,则该电子邮件将被拆分为两封单独的电子邮件,并导致两封电子邮件发送到外部电子邮件服务器。虽然两封电子邮件包含相同的内容,只是不同的 RCPT TO 标头,但这将导致外部电子邮件服务器两次处理相同的电子邮件,这对于我们的项目来说是不理想的。
这是我第一次创建传输代理,我正在尝试确定是否需要更改交换服务器的某些设置以阻止满足此条件的电子邮件被拆分为多个电子邮件?
我们的传输代理的主要目标是允许外部电子邮件服务器处理发往内部收件人的电子邮件,因为它们目前将未经处理地放入内部用户的邮箱。这可能与我们的发送/接收连接器有关,任何关于这些问题的任何问题的指导将不胜感激。如果路由代理不是此问题的正确解决方案,我们对其他可能性持开放态度。
我们的事件处理程序的片段:
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);
}
}