进入的电子邮件不再处理,日志显示无法处理电子邮件:Email::Receiver::EmptyEmailError

突然,系统停止处理电子邮件。在日志中,我可以看到以下条目:

Message (7560 copies reported)

Email can not be processed: Email::Receiver::EmptyEmailError


Backtrace

/var/www/discourse/lib/email/processor.rb:183:in `log_email_process_failure'
/var/www/discourse/lib/email/processor.rb:29:in `rescue in process!'
/var/www/discourse/lib/email/processor.rb:16:in `process!'
/var/www/discourse/lib/email/processor.rb:13:in `process!'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:29:in `process_popmail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:49:in `block (2 levels) in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-pop-0.1.2/lib/net/pop.rb:669:in `each_mail'
/var/www/discourse/app/jobs/scheduled/poll_mailbox.rb:46:in `block in poll_pop3'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/net-pop-0.1.2/lib/net/pop.rb:531:in `start'

我检查了收件箱,没有发现任何可疑邮件……

错误未显示在拒绝列表中,事实上,那里已不再列出任何内容。

所有邮件似乎都保留在收件箱中,未被处理。

我在通过 pop 轮询邮件时,由于收件箱过大导致超时,曾遇到过一次这种情况

您会删除收到的邮件吗?

我还没有,但邮件不多。大约 30 封。

而且我实际上需要处理它们……

您尝试过 Email::Processor does not expect to be called with mail=nil - #17 by davidb 吗?

1 个赞

是的,此设置一直都已启用。

我认为电子邮件提供商有问题。奇怪的事情正在发生……

谢谢你的帮助,如果我弄明白了,我会告诉你的!

如果我没记错的话,我修补了正在运行的 discourse 代码以忽略空邮件。

你可以在第 18 行之前尝试插入 return if @mail.blank?

或者,你可以尝试从 sidekiq 中移除失败的任务。

(在进行此类实验之前,我会先进行备份)

2 个赞

如果这能解决问题,那么就应该将此移至 #bug。

2 个赞

请稍等。似乎邮件服务器出了点问题。除了空邮件错误之外,我还遇到了读取超时,这最初我并没有将其与邮件过程联系起来,但事实确实如此。

我目前正在与我的邮件托管服务商沟通,他已确认似乎是他们那边出了些问题。

一旦我了解更多情况,会立即告知您!

2 个赞

好的,我们找到了罪魁祸首。原来是有一封邮件有问题,我把它移到一个单独的文件夹后,其余的邮件就都能正常处理了。

IMAP 客户端可以正常显示这封邮件。如果你需要,我可以私信你这封邮件的原始内容(包括所有头部信息),以便你检查和调试导致进程挂起的具体原因。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

你还有那封邮件吗?如果你有的话,我很想看看(通过私信):+1: