Mailkit如何发送和检查异步SMTP

Mailkit How to send and check aysynchronous SMTP

所以网上有一些很好的例子说明如何使用 Mailkit 通过 SMTP 发送电子邮件。

通常以 :

结尾
client.Authenticate(theSMTPUsername,theSMTPPassword);
client.Send(emailMessage);
client.Disconnect(true);

但是,如果需要异步,这就不好了:

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);

但是,我想知道异步发送何时完成,或者是否不成功。在 .Net 本机库下,这是通过回调(事件处理程序)实现的。

是否可以为 MailKit SendAsync 定义一个 'Completed' 回调处理程序,如果不能,确定成功与否的最佳实践是什么。

谢谢

您不希望有这样的代码:

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);

这将在异步发送操作完成之前断开连接。

相反,您想这样做:

client.Authenticate(theSMTPUsername,theSMTPPassword);
await client.SendAsync(emailMessage);
client.Disconnect(true);

当然,一旦您等待异步任务...现在您不需要 Completed 事件:)

也就是说,有一个您可以连接到的 MessageSent 事件:

http://www.mimekit.org/docs/html/E_MailKit_MailTransport_MessageSent.htm