使用ActionMailerNext
,这是现已死亡的 ActionMailer.net的一个分支,我一生都无法弄清楚如何确定电子邮件是否已发送,或者是否发生了阻止发送电子邮件的错误。
这两个网站都没有提供任何关于如何做到这一点的想法。两个小时的谷歌搜索也同样富有成效(不是!
通常,通过数据库更新之类的东西,我可以执行
if((await _db.SaveChangesAsync()) > 0){ ... }
并且能够在是更新和不失败部分之间分叉代码。我需要能够用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为我睡眠不足的大脑正常运作所需的戳。
对于那些想知道的人,返回的集合包含两个变量:一个字符串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为我睡眠不足的大脑正常运作所需的戳戳。