加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 为什么电子邮件不能与ActiveJob一起发送?

发布时间:2020-12-17 01:56:00 所属栏目:百科 来源:网络整理
导读:我正在将应用程序升级到Rails 4.2,因此我们可以利用ActionMailer的deliver_later方法.一切都在发展中很好.当我使用capistrano-sidekiq gem部署到我们的登台服务器时,似乎没有发送电子邮件.根据此日志,作业将排队并正确执行. 服务器是Ubuntu 14.04,通过apt-ge
我正在将应用程序升级到Rails 4.2,因此我们可以利用ActionMailer的deliver_later方法.一切都在发展中很好.当我使用capistrano-sidekiq gem部署到我们的登台服务器时,似乎没有发送电子邮件.根据此日志,作业将排队并正确执行.

服务器是Ubuntu 14.04,通过apt-get安装了redis.

[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 51ddade2-4689-40fd-aeda-7e94f7260e43) to Sidekiq(mailers) with arguments: 
"ApplicationMailer","admin_message","deliver_now","Broken Link","Testing an email from staging."
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43] Performing ActionMailer::DeliveryJob from Sidekiq(mailers) 
with arguments: "ApplicationMailer","Testing an email from staging."
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43]   Rendered application_mailer/admin_message.html.erb within  layouts/mailer (1.9ms)
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43]   Rendered layouts/mailer.html.erb (8.8ms)
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43]   Rendered application_mailer/admin_message.text.erb within layouts/mailer (0.8ms)
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43]   Rendered layouts/mailer.text.erb (3.6ms)
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43]
Sent mail to email-testing@loamstudios.com (216.8ms)
[ActiveJob] [ActionMailer::DeliveryJob] [51ddade2-4689-40fd-aeda-7e94f7260e43] Performed ActionMailer::DeliveryJob from Sidekiq(mailers) in 796.8ms

我检查了sidekiq是否正在使用ps aux |运行[sS] idekiq并且有一个条目:

deploy   15104  0.4  7.4 972692 152452 ?       Sl   10:07   0:03 sidekiq 3.5.1 sustainabilityassessment_staging [0 of 25 busy]

我还确保邮件队列在deploy.rb中存在set:sidekiq_queue,[“default”,“mailers”].

我的邮件方法:

def admin_message(subject,message)
    @message = message
    mail(to: "<address>",subject: subject)
  end

知道发生了什么或接下来我可以解决什么问题吗?

编辑:
做了一些挖掘.我在appname / current中使用RAILS_ENV = staging bundle exec sidekiq -q mailers -q default启动了sidekiq并尝试再次发送电子邮件.这次发送的电子邮件,所以capistrano-sidekiq gem启动sidekiq的方式似乎有问题.

编辑:
设置sidekiq的监控应用程序,看看我是否可以学习任何新东西.看来工作正在处理中没有问题.仍然没有收到电子邮件……

编辑:在config / environments / staging.rb中发现一个额外的config.action_mailer.raise_delivery_errors = false,阻止我看到我的错误.我现在可以看到电子邮件被拒绝了:

Net::SMTPServerBusy: 454 4.7.1 <email address>: Relay access denied

编辑:另外一条信息,在同一邮件程序上调用deliver_now.调用deliver_later会导致电子邮件被拒绝.这使我认为应用程序的SMTP设置正常.在deliver_later调用中发生了一些事情,以防止发送电子邮件.

解决方法

我最近在我们的一台服务器上碰到了这个.它的配置方式与另一台服务器完全相同,但电子邮件未被发送,即使它看起来像Resque已成功处理它们.

事实证明,这是我们的监控工具God的一个问题.运行sudo服务神重启自己没有正确重置工人.解决办法是停止所有sudo神停止的工人,确认他们是用ps aux |停止的grep resque,然后关闭上帝与sudo服务神停止并启动它与sudo服务神开始.

如果您正在使用某种工具来监控,启动和停止Sidekiq,我会调查并确保工作人员正确停止并重新启动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读