我正在将应用程序升级到Rails 4.2,所以我们可以利用ActionMailer的deliver_later
方法。一切都在开发中发挥作用。当我使用capistrano-sidekiq
gem部署到我们的临时服务器时,电子邮件看起来并未交付。根据这个日志,看起来作业正在排队并正确执行。为什么不通过ActiveJob发送电子邮件?
服务器是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", "admin_message", "deliver_now", "Broken Link", "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 protected] (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]
我也确保了与set :sidekiq_queue, ["default", "mailers"]
队列存在的寄件人在我deploy.rb
。
我的邮件方法:
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.action_mailer.raise_delivery_errors = false
在config/environments/staging.rb
这阻止了我看到我的错误。我现在可以看到邮件被拒绝:
Net::SMTPServerBusy: 454 4.7.1 <email address>: Relay access denied
编辑:还有一个资料片,呼吁同邮件作品deliver_now
。拨打deliver_later
会导致电子邮件被拒绝。这导致我认为应用程序的SMTP设置正在工作。拨打deliver_later
时发生了一些情况,以防止发送电子邮件。
确保你在你的Rails配置中有'config.action_mailer.raise_delivery_errors = true'。如果ActionMailer遇到错误,这将帮助您排除故障。 –
谢谢。添加了该行。测试。没有这样的运气。相同的日志条目。 –
当您使用'deliver_now'时,电子邮件是否成功发送?这将有助于缩小配置问题还是sidekiq问题。 –