我有个怀疑:我们也会将邮件列表的邮件导入 Discourse。如果一封待审核的旧邮件被邮件列表管理员放行,Discourse 的过滤器可能会认为它过于陈旧。由于代码中使用了 break,循环会提前退出。因此,单封旧邮件就可能导致后续所有处理被中断。
另外,由于此 POP 邮件服务器的排序方式,邮件将从旧到新处理。
这个补丁怎么样,@gerhard?此外,如果可能,请优先使用 Discourse.handle_job_exception,以便正确报告其他任何错误。
- break if mail_too_old?(mail_string)
+ next if mail_too_old?(mail_string)
感谢解释,这很有道理。
@riking 我同意,正确的修复方案应该使用 handle_job_exception。欢迎提交 PR。![]()
这应该能解决问题。