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 定义一个“已完成”的回调处理程序,如果不是,那么发现它是否成功的最佳实践是什么。
谢谢
你不想有这样的代码:
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