gpt4 book ai didi

ruby-on-rails - Sidekiq 和 rails 4 actionmailer 从不发送电子邮件

转载 作者:数据小太阳 更新时间:2023-10-29 06:41:04 24 4
gpt4 key购买 nike

我在 Rails 4 应用程序中设置了 sidekiq,用于发送电子邮件和处理后台作业。我还设计了我正在使用的 devise_async 和典型的联系表单电子邮件。我正在使用 gmail 发送电子邮件。

如果我删除 sidekiq,它通常会通过 gmail(设计和联系表单)发送电子邮件,但是当我启用它时,它不起作用(devise_async 和联系表单都没有)。 Sidekiq 显示后台作业成功启动和完成(我也通过 sinatra 应用程序看到它们已被处理)但电子邮件从未送达。

在开发中,控制台显示已发送电子邮件(使用 devise_async 和联系表单,因为它们已使用 sidekiq 成功处理)。

我已经尝试过的:

  • 我已经为 sidekiq 的 rails4 添加了 github 分支(我也试过 master)
  • 我已经更新并检查 redis 版本是否大于2.4(现在是 2.6.14)
  • 我正在使用 bundle exec sidekiq 运行 sidekiq

但没有任何效果。我正在使用 ruby 2.0.0-p247。

我还在这个应用程序中使用 sidekiq 设置了图像处理,并且在开发和生产中都能完美运行。

我没有做任何花哨的事情,但我正在添加完成代码:

我的邮件程序代码:

  def send_message
@message = Message.new(message_params)
if @message.save
ContactMailer.delay.contact_form(@message.id)
end
end

我的邮件:

  def contact_form(message_id)
message = Message.where(id: message_id).first
@email = message.email
@message = message.text
mail(to: "myemail@gmail.com", subject: "Message from contact form")
end

以及我的生产配置(无需 sidekiq 即可工作):

  config.action_mailer.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:authentication => "plain",
:enable_starttls_auto => true,
:user_name => "myusername",
:password => "mypassword"
}
config.action_mailer.default_url_options = { :host => "mydomain.com" }

这是一个典型的 sidekiq 队列:

    /home/john/.rvm/gems/ruby-2.0.0-p247@cluey/bundler/gems/sidekiq-4ed6eba8aff1/lib/sidekiq/rails.rb:14: warning: toplevel constant Queue referenced by Sidekiq::Client::Queue
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: Booting Sidekiq 2.5.2 with Redis at redis://localhost:6379/0
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: Running in ruby 2.0.0p247 (2013-06-27 revision 41674) [i686-linux]
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: See LICENSE and the LGPL-3.0 for licensing details.
2013-07-19T09:47:56Z 20112 TID-1a5mkc INFO: Starting processing, hit Ctrl-C to stop
2013-07-19T09:48:11Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-4a7e66a14deab112191e4b49 INFO: start
2013-07-19T09:48:12Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-4a7e66a14deab112191e4b49 INFO: done: 1.214 sec
2013-07-19T09:48:50Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-32191822b789f5b6896a5353 INFO: start
2013-07-19T09:48:51Z 20112 TID-1u2z02 Devise::Async::Backend::Sidekiq JID-32191822b789f5b6896a5353 INFO: done: 0.143 sec
2013-07-19T09:49:29Z 20112 TID-1u2z02 Sidekiq::Extensions::DelayedMailer JID-c1911e0c4b72295dc067d57f INFO: start
2013-07-19T09:49:29Z 20112 TID-1u2z02 Sidekiq::Extensions::DelayedMailer JID-c1911e0c4b72295dc067d57f INFO: done: 0.152 sec

我认为它与 actionmailer 和 sidekiq 有关,但我不知道如何调试,一切似乎都正常,但电子邮件从未送达。

最佳答案

我找到了,你必须像这样运行sidekiq:

RAILS_ENV=production bundle exec sidekiq -D

在生产中运行。这是与 Assets 预编译相同的问题。

关于ruby-on-rails - Sidekiq 和 rails 4 actionmailer 从不发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com