我正在使用 ActionMailer deliver_later w ActiveJobs / Sidekiq 使用:
config.active_job.queue_adapter = :sidekiq
当我在开发模式 w MailCatcher 中进行测试时,我能捕捉到的唯一错误是 Errno::ECONNREFUSED,设置端口 1026 而不是 1025
当我测试 Deliver_now 时,我收到 Errno::ECONNREFUSED 错误,这很好
begin
MessageMailer.contact_me_email(@message).deliver_now
rescue Errno::ECONNREFUSED, Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
flash[:error] = "Problems sending mail. Please try again later"
# delete message or resend it ?
byebug
@message.destroy
format.html { render :new }
end
但是,当我请求deliver_later 时,请求在sidekiq 邮件队列中很痛苦,并且没有捕获错误......
begin
MessageMailer.contact_me_email(@message).deliver_later(wait: 1.minute ) # in mailers queue
rescue Errno::ECONNREFUSED, Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
flash[:error] = "Problems sending mail. Please try again later"
# delete message or resend it ?
byebug
@message.destroy
format.html { render :new }
end
在这种情况下,我如何捕获和拯救 SMTP 错误?我想这是 Sidekiq 的责任来处理它......欢迎任何提示......