Asynchronous 我如何知道SmtpClient是否真的发送了电子邮件?

Asynchronous 我如何知道SmtpClient是否真的发送了电子邮件?,asynchronous,smtp,async-await,smtpclient,asp.net-identity-2,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); 问题是,我的配置文件中有多个电子邮件服务器,我的想法是,如果

我正在使用.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]
     :
}
foreach (var oneSmtpServerInfo in FallbackSmtpServers)
{
     :
     await smtp.SendMailAsync(msg);
     :
}
foreach(fallbacksmtpserver中的var oneSmtpServerInfo)
{
:

smtp.SendMailAsync(msg);//只需
等待
以下异步任务:

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

只需等待异步任务,如下所示:

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

唯一可以检查执行是否引发异常的内容。异常将在添加WAIT语句的位置引发。唯一可以检查执行是否引发异常的内容。异常将在添加WAIT语句的位置引发。