Mailkit 如何发送和检查异步 SMTP

Hug*_*hgo 2 email asynchronous smtp mailkit

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

通常以:

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.Send(emailMessage);
client.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

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

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

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

是否可以为 MailKit SendAsync 定义一个“已完成”的回调处理程序,如果不是,那么发现它是否成功的最佳实践是什么。

谢谢

jst*_*ast 7

你不想有这样的代码:

client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

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

相反,您想要这样做:

client.Authenticate(theSMTPUsername,theSMTPPassword);
await client.SendAsync(emailMessage);
client.Disconnect(true);
Run Code Online (Sandbox Code Playgroud)

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

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

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