C#邮件包交付状态通知

C#邮件包交付状态通知,c#,notifications,mailkit,C#,Notifications,Mailkit,我正在使用MailKit创建一个电子邮件管理系统 我需要跟踪交付,但我只能找到DeliveryStatusNotification enum,但无处应用它 到目前为止,我得到的是: var message = new MimeMessage(); DeliveryStatusNotification delivery = DeliveryStatusNotification.Delay | DeliveryStatusNotification.Failure | DeliveryS

我正在使用MailKit创建一个电子邮件管理系统

我需要跟踪交付,但我只能找到
DeliveryStatusNotification enum
,但无处应用它

到目前为止,我得到的是:

var message = new MimeMessage();
DeliveryStatusNotification delivery = 
  DeliveryStatusNotification.Delay |
  DeliveryStatusNotification.Failure |
  DeliveryStatusNotification.Never |
  DeliveryStatusNotification.Success;
message.Headers.Add(new Header(HeaderId.ReturnReceiptTo, "test@example.com")); // Delivery report

指导我正确的方向???

您需要做的是子类SmtpClient并重写GetDeliveryStatusNotifications方法:

class DSNSmtpClient : SmtpClient
{
    protected override DeliveryStatusNotification? GetDeliveryStatusNotifications (MimeMessage message, MailboxAddress mailbox)
    {
        if (/* some criteria for deciding whether to get DSN's... */)
            return DeliveryStatusNotification.Delay | 
                   DeliveryStatusNotification.Failure | 
                   DeliveryStatusNotification.Success;
        return null;
    }
}

对于pop3,如何从Message对象知道传递失败的邮件通知?有什么样的地方我可以看看吗?哦,那是收据。状态通知非常类似,只是它是MessageDeliveryStatus,而不是MessageDispositionNotification.Yikes!为什么设计决定要强迫用户这样子类化它?否则你会怎么做?您将设计什么样的API?也许添加一些可以在消息上设置的属性而不是使用子类会更好