0

我正在为运行 Windows 2003 服务器的人工作。他们希望我制作一个 SMTP 接收器,它可以对我们要将消息发送到的数据库和表进行分类。他们在此服务器上没有交换,只有默认的虚拟 SMTP 服务器。

我做了一个类,我认为当 SMTP 服务器 onarrival 事件发生时应该触发它。我在注册课程时遇到问题,但是,当我运行 RegAsm /regfile 时,我收到“警告,RA0000:不会发生注册,没有要注册的类型”。如果我使用 /TLB 运行 RegAsm,它会告诉我类型已注册,但按类不会显示在全局注册表中,并且当邮件发送到服务器时不会调用我的类。我对自己做错了什么有点不知所措。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;


namespace SMTPSink
{
    [Guid("????-????-?????-????")]
    [ComVisible(true)]
    [ProgId("SMTPSINK")]
    public class SMTPSink : CDO.ISMTPOnArrival
    {
        SMTPSink()
        { }

        void CDO.ISMTPOnArrival.OnArrival(CDO.Message Message, ref CDO.CdoEventStatus EStatus)
        {
            //Simple test to see if this fires on mail arrival
        }
    }
}
4

1 回答 1

2

您忘记将构造函数公开。导出没有 [noncreatable] 类型库属性的 ​​coclass 时需要。使固定:

    public SMTPSink()
    { }

或者如果它没有做任何有用的事情,就省略它。

于 2012-06-27T23:56:11.337 回答