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
所以网上有一些很好的例子说明如何使用 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