C# Exchange传输代理-创建邮件项

C# Exchange传输代理-创建邮件项,c#,exchange-server,exchange-transport-agents,C#,Exchange Server,Exchange Transport Agents,我一直在写一个Exchange传输代理,我似乎已经把实际开发它的一切都弄清楚了。但现在是测试的时候了,我遇到了一个问题 我正在收听OnEndOfData活动,以便查看整个电子邮件。电子邮件包裹在EndOfDataEventArgs对象中到达,该对象包含MailItem对象。正是此MailItem对象包含电子邮件,并导致了问题。我想构造一个MailItem对象,这样我就可以在收到电子邮件时测试一切是否按预期运行。但到目前为止,我还无法做到这一点 请注意,这是Microsoft.Exchange.D

我一直在写一个Exchange传输代理,我似乎已经把实际开发它的一切都弄清楚了。但现在是测试的时候了,我遇到了一个问题

我正在收听OnEndOfData活动,以便查看整个电子邮件。电子邮件包裹在EndOfDataEventArgs对象中到达,该对象包含MailItem对象。正是此MailItem对象包含电子邮件,并导致了问题。我想构造一个MailItem对象,这样我就可以在收到电子邮件时测试一切是否按预期运行。但到目前为止,我还无法做到这一点

请注意,这是Microsoft.Exchange.Data.Transport.MailItem对象,而不是Microsoft.Office.Interop.Outlook.MailItem。因此,使用Application.CreateItem将不起作用

MailItem是抽象的,所以我尝试将其子类化。但在编译时,我们发现MailItem包含许多抽象的内部属性和/或方法。因此,由于我必须覆盖它们,但由于无法看到它们,所以无法覆盖它们,所以这种方法不起作用


有没有我不知道的工厂方法?是否有一些内置类扩展了我忽略的MailItem?或者根本无法从Exchange传输代理DLL外部创建邮件项目?

不确定是否要创建邮件项目对象进行测试。请说明开发代理的目的,以便我们可以更好地帮助您。邮件项目对象表示发送的电子邮件,您将能够从中获取电子邮件的大部分详细信息mailitem对象取决于调试代理的目标事件。

大多数场景仅使用mailitem.Message,不需要mailitem本身的任何其他属性。由于EmailMessage可以很容易地创建,也许您可以将其用于测试

您的实际事件处理程序可以只调用指定MailItem.Message的方法,对于测试,您可以使用构造的测试消息调用相同的方法