我如何知道SmtpClient是否实际发送了电子邮件?

时间:2016-03-09 18:20:12

标签: asynchronous smtp async-await smtpclient asp.net-identity-2

我使用的是.NET 4.5,并尝试使用SmtpClient()SendMailAsync方法。当然有很多例子,但很多只是其他人代码的转发。

基本上我正在尝试使用Identity 2.x的电子邮件服务,因此该方法具有此签名

public async Task SendAsync(IdentityMessage message) { ... }

最终会有类似于下一个语句异步发送邮件的内容:

smtp.SendMailAsync(msg);

问题是,我的配置文件中有多个电子邮件服务器,其想法是,如果其中一个失败,系统应该尝试下一个,直到它能够发送邮件(我知道不能保证邮件有到了任何地方)。像这样:

foreach (var oneSmtpServerInfo in FallbackSmtpServers)
{
     :
     smtp.SendMailAsync(msg);          // <--- successful? [A]
     :
}

但正如你猜测的那样,如果&#39; A&#39;声明成功处理邮件我不想继续使用列表中的其他服务器。

1 个答案:

答案 0 :(得分:0)

只需await这样的异步任务:

foreach (var oneSmtpServerInfo in FallbackSmtpServers)
{
     :
     await smtp.SendMailAsync(msg);
     :
}