为 Exchange 2013 创建 RoutingAgent 传输代理
了解如何创建自定义 RoutingAgent 传输代理以用于 Exchange 2013。
适用于:Exchange Server 2013
相关代码片段和示例应用:
RoutingAgentFactory 和 RoutingAgent 类是传输代理的基类,这些代理设计为在 Exchange Server 2013 邮箱服务器上的传输服务上运行。 RoutingAgent 类提供下表中列出的事件,你可以在 RoutingAgent 传输代理中实现处理程序。
表 1. RoutingAgent 类事件
"事件" | 说明 |
---|---|
OnCategorizedMessage |
在服务器执行内容转换后发生(如果需要)。 |
OnResolvedMessage |
在已解决邮件的所有收件人之后,在确定路由之前发生。 |
OnRoutedMessage |
在服务器将消息路由到下一跃点并执行内容转换(如果需要)之后发生。 服务器可能会使用比 OnSubmittedMessage 事件更多的资源来处理 OnRoutedMessage 事件中的每个消息,因为服务器在执行 OnRoutedMessage 事件处理程序中的代码之前,将执行任何必要的内容转换并确定消息路由中的下一跃点。 |
OnSubmittedMessage |
在消息从提交队列中取出后发生。 如果 RoutingAgent 传输代理不需要内容转换、解析的收件人或路由数据,请使用 OnSubmittedMessage 事件。 |
创建自定义 RoutingAgent 传输代理
以下过程介绍如何创建自定义 RoutingAgent 传输代理。
创建传输代理
添加对命名空间的引用。
using Microsoft.Exchange.Data.Mime; using Microsoft.Exchange.Data.Transport; using Microsoft.Exchange.Data.Transport.Routing;
可以在 Exchange 服务器上找到这些命名空间。 通过添加对这些命名空间的引用,你将有权访问 RoutingAgent 成员以及 Exchange 2013:生成带宽日志记录传输代理 示例中使用的其他类。
实现 RoutingAgentFactory 类的派生类。
public class BandwidthLoggerFactory : RoutingAgentFactory { public override RoutingAgent CreateAgent(SmtpServer server) { return new BandwidthLogger(server); } }
此代码将实例化派生类并重写 CreateAgent 方法以创建新的自定义代理的实例。 此类中还可以重写其他方法(如 Close),以执行自定义代码。
定义代理。
public class BandwidthLogger : RoutingAgent { // Your custom code goes here public BandwidthLogger(SmtpServer server) { Debug.WriteLine(logPrefix + "Agent constructor"); this.server = server; this.OnSubmittedMessage += SubmittedMessage; this.OnRoutedMessage += RoutedMessage; } }
定义代理类后,可以添加自定义功能。 在此示例中, OnSubmittedMessage 和 OnRoutedMessage这两个事件重定向到自定义事件处理程序。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈