You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确认ActionMailerNext是否成功发送邮件?

判断ActionMailerNext邮件发送状态的实用方案

我最近在用ActionMailerNext(那个已经停止维护的ActionMailer.net分支)时,碰到了个头疼的问题——没法确定邮件到底是发送成功了,还是因为报错失败了。翻遍相关站点、谷歌搜了俩小时都没找到靠谱的解决方案。就像我们在数据库操作里,可以通过await _db.SaveChangesAsync()的返回值判断更新是否生效一样,我也想在ActionMailerNext里实现类似的判断逻辑,但一开始完全摸不着头绪。

调用.Deliver()方法后,它会返回System.Collections.Generic.IList<ActionMailerNext.Interfaces.IMailResponse>,可我根本不知道怎么解析这个返回值,甚至专门搜IMailResponse都没找到有用的信息。

最终解决办法

后来我弄明白了,这个返回集合里的每个IMailResponse对象其实包含两个核心属性:

  • Email:字符串类型,对应收件人的邮箱地址
  • DeliveryStatus:枚举类型,包含四种状态:DELIVERED、INVALID、QUEUED、REJECTED

因为我的需求只是发送单封邮件,所以用下面的代码实现了判断逻辑:

if(e.All(x => x.DeliveryStatus == DeliveryStatus.DELIVERED)) { 
    // 所有邮件发送成功时执行的业务逻辑
} else { 
    // 存在发送失败的邮件时,执行回退操作
}

关键注意事项

这里要特别说明:这个判断只能确认邮件是否成功送达出站SMTP服务器,没办法追踪邮件后续是否到达收件人邮箱、是否被标记为垃圾邮件等状态。

感谢@ADyson的提示,帮我顺利解决了这个问题。


内容的提问来源于stack exchange,提问作者René Kåbis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:47:37