-1

使用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 的枚举,它为每个发送的电子邮件提供四种响应之一:已发送、无效、排队和拒绝。通过执行以下操作,即使只发送了一封电子邮件(因为我的需求很简单):

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

如果一封或多封电子邮件未能发送,我能够确保存在备用方案。

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

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

4

1 回答 1

-1

对于那些想知道的人,返回的集合包含两个变量:一个字符串Email和一个名为 DeliveryStatus 的枚举,它为每个发送的电子邮件提供四种响应之一:已发送、无效、排队和拒绝。通过执行以下操作,即使只发送了一封电子邮件(因为我的需求很简单):

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

如果一封或多封电子邮件未能发送,我能够确保存在备用方案。

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

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

于 2018-05-15T16:24:35.053 回答