如何使用 MailKit 检查电子邮件是否已送达

How to check if an email was delivered using MailKit

我正在使用@jstedfast Mimekit/Mailkit 库从我的 API 发送电子邮件。我想知道如何获取每封电子邮件的发送状态。我尝试覆盖 DeliveryStatusNotification 以在成功时发送通知:

public class DSNSmtpClient : SmtpClient
{
    public DSNSmtpClient()
    {
    }
    protected override string GetEnvelopeId(MimeMessage message)
    {
        return message.MessageId;
    }
    protected override DeliveryStatusNotification? GetDeliveryStatusNotifications(MimeMessage message, MailboxAddress mailbox)
    {
        return DeliveryStatusNotification.Success;
    }
}

我可以发送这样的电子邮件:

using (DSNSmtpClient dsnSmtpClient = new DSNSmtpClient())
{
    dsnSmtpClient.Connect(_emailCredentials.Value.SmtpServer, _emailCredentials.Value.Port, true);
    dsnSmtpClient.Authenticate(_emailCredentials.Value.UserName, _emailCredentials.Value.Password);
    dsnSmtpClient.Send(mimeMessage);
    dsnSmtpClient.Disconnect(true);
}

但我的发件人收件箱中没有收到任何有关递送状态(或任何内容)的电子邮件。

我找到了一些相关链接:

get the delivery status of email with mimekit/mailkit library

https://github.com/jstedfast/MailKit/issues/602

但他们只让我走到这一步。 我还需要做什么来查看电子邮件是否送达?

确保您的 SMTP 服务器支持 DSN 扩展。

var supportsDsn = client.Capabilities.HasFlag (SmtpCapabilities.Dsn);