因此,网上有一些很好的例子可以说明如何使用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定义“已完成”的回调处理程序,如果不是,最好的做法是发现它是否成功。
由于
答案 0 :(得分:4)
您不希望拥有这样的代码:
client.Authenticate(theSMTPUsername,theSMTPPassword);
client.SendAsync(emailMessage);
client.Disconnect(true);
这将在异步发送操作完成之前断开连接。
相反,你想这样做:
client.Authenticate(theSMTPUsername,theSMTPPassword);
await client.SendAsync(emailMessage);
client.Disconnect(true);
当然,一旦你等待异步任务......现在你不需要一个完成的事件:)
也就是说,有一个MessageSent事件可以连接到:
http://www.mimekit.org/docs/html/E_MailKit_MailTransport_MessageSent.htm