Eventsink 的 C# CDO

C# CDO for Eventsink

我有一个正在实施 ISMTPOnArrival 的 class a1。

在我的 public 方法中

public void OnArrival(Message Msg, ref CdoEventStatus EventStatus)
{
    string strFixedList = Msg.EnvelopeFields["http://schemas.microsoft.com/cdo/smtpenvelope/recipientlist"].Value.ToString();

}

我正在为此事件接收器编写 Nunit 测试。在我的单元测试方法中,我有一个私有方法,它会获取 eml 文件和 returns 我一个 CDO.Message 并且这个对象被传递给 onArrival.

private CDO.Message ReadMessage(String emlFileName)
{
    CDO.Message msg = new CDO.MessageClass();
    ADODB.Stream stream = new ADODB.StreamClass();
    ...
    msg.DataSource.OpenObject(stream, "_Stream");
    msg.DataSource.Save();
    return msg;
}

当我调用 public 方法时

a1 b = new a1();

b.OnArrival(消息,参考 cdoevent);

"Msg.EnvelopeFields["http://schemas.microsoft.com/cdo/smtpenvelope/recipientlist"]" 抛出异常。有人可以让我知道这是什么问题吗?

例外情况是 "The requested property or feature, while supported, is not available at this time or in this context"。

有一个变通办法并设置了一个标志,如果它是一个单元测试,那么我会硬编码一个信封字段。

这是有效的。