Rails ActionMailer 发送遇到 5xx 错误后的忽视错误继续发送如何做?

royalar · 2014年07月18日 · 最后由 royalar 回复于 2014年07月18日 · 1584 次阅读

我所使用的 SMTP 服务商在收件人(即 to + cc)中存在无效的邮件地址时,会返回 5xx 错误,默认情况下这样的话整封邮件就发布出去了,地址正常的收件人也无法收到邮件。我咨询了邮件服务商,答复说需要忽略这些错误然后继续发送。我想请问下在 ActionMailer 里要怎么做?

config.action_mailer.raise_delivery_errors = true

这个选项已经打开,可以在 log 里看到这块错误的输出

判断一下收件地址是否合法要比处理这个 error 简单多了嘛

#1 楼 @dddd1919 这个很难判断,不是收件地址是否合理,而是收件地址是否存在。比如 [email protected],这个地址是合法的,但不存在这个地址

我的想法是是捕获这种错误,然后继续发送邮件,并且在捕获处理中标注这个邮箱失效了,下次直接过滤掉即可

一个邮件地址无效怎么会导致其他收件人无法收到?发件逻辑怎么写的?

设置成false不行么?

#4 楼 @dddd1919 设置成 false 只是让错误不出现在日志里

#3 楼 @Rei 有些 SMTP 确实是这样的逻辑的,是会先返回一个错误给发件端

#6 楼 @royalar QQ 就是这样。。。

楼主把所有收件人都放在一封邮件里吗?

#8 楼 @Rei 应该不是吧,不然岂不是一下子就看到好多其他人的邮件地址?

#9 楼 @Martin91 所以我前面问楼主怎么写的。

#7 楼 @ruby_sky 嗯,QQ 这些是这样的,但也是存在先退信这类的

#8 楼 @Rei 有分成 to、和 cc 这种情况。也就是 to+tcc 中存在不存在的邮件地址时,SMTP 会先返回一个 5xx 错误

#7 楼 @ruby_sky 我想了下,先退信的话也是让发件方知道哪些邮件地址不存在

需要 登录 后方可回复, 如果你还没有账号请 注册新账号