ActionMailer.net/ActionMailerNext - 如何确认是否已发送电子邮件?

时间:2018-05-15 04:46:34

标签: asp.net asp.net-mvc asp.net-mvc-5 actionmailer actionmailer.net

使用ActionMailerNext,这是现在已经死亡的 ActionMailer.net 的分支,我不能在我的生活中找出如何确定是否已发送电子邮件,或者如果发生了阻止发送电子邮件的错误。

两个网站都没有提供有关如何执行此操作的任何信息。两个小时的谷歌搜索同样富有成效(不!)。

通常情况下,通过数据库更新,我可以做一个

if((await _db.SaveChangesAsync()) > 0){ ... }

并且能够在yes-it-updated和no-it-failed部分之间分叉代码。我需要能够使用ActionMailerNext执行此操作,而且我还不知道如何。

实际的.Deliver()会返回

System.Collections.Generic.IList<ActionMailerNext.Interfaces.IMailResponse>

但是我不知道怎么解压它因为我不知道里面是什么。任何谷歌IMailResponse的尝试都不会让我回到任何使用状态。

编辑:

对于那些想知道的人,返回的集合包含两个变量:一个字符串Email和一个名为DeliveryStatus的Enum,它为每个发送的电子邮件提供四个响应之一:DELIVERED,INVALID,QUEUED和REJECTED。通过执行以下操作,即使只发送了一个电子邮件(因为我的需求很简单):

if(e.All(x => x.DeliveryStatus == DeliveryStatus.DELIVERED)) {
  // Do if ALL eMails were sent
} else {
  // Fallback if ANY eMail was not sent
}

如果一个或多个电子邮件无法发送,我能够确保存在回退。

请记住:这仅适用于将电子邮件发送到外发SMTP服务器的情况;系统不知道除此之外会发生什么。

感谢下面的@ADyson为我的睡眠不足的大脑正常运作所需的捅。

1 个答案:

答案 0 :(得分:-1)

对于那些想知道的人,返回的集合包含两个变量:一个字符串Email和一个名为DeliveryStatus的Enum,它为每个发送的电子邮件提供四个响应之一:DELIVERED,INVALID,QUEUED和REJECTED。通过执行以下操作,即使只发送了一个电子邮件(因为我的需求很简单):

if(e.All(x => x.DeliveryStatus == DeliveryStatus.DELIVERED)) {
  // Do if ALL eMails were sent
} else {
  // Fallback if ANY eMail was not sent
}

如果一个或多个电子邮件无法发送,我能够确保存在回退。

请记住:这仅适用于将电子邮件发送到外发SMTP服务器的情况;系统不知道除此之外会发生什么。

感谢@ADyson为我的睡眠不足的大脑正常运作所需的捅。