我已經在rails 4應用程序中設置sidekiq來發送電子郵件和處理後臺作業。我還設計了我正在使用devise_async和一個典型的聯繫人表單電子郵件。我使用Gmail來發送電子郵件。Sidekiq和rails 4 actionmailer從不提供電子郵件
如果我刪除sidekiq,它通常通過gmail(設計和聯繫表單)發送電子郵件,但是當我啓用它時,它不起作用(既不devise_async也不聯繫表單)。 Sidekiq顯示後臺作業開始併成功完成(我也通過sinatra應用程序看到它已被處理),但電子郵件從未交付。
在開發過程中,控制檯顯示發送的電子郵件(均使用devise_async和聯繫表單,因爲它們是用sidekiq成功處理的)。
我已經有嘗試:
- 我已經添加了GitHub的分支爲sidekiq的rails4(我也嘗試了主)
- 我已經更新和檢查的Redis版本要大於2.4 (這是2.6.14)
- 我正在sidekiq與
bundle exec 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: "[email protected]", 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/[email protected]/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做的,但我不知道如何調試,一切似乎工作,但郵件永遠不會傳遞。
日誌文件是否包含有用的東西? –
只有這個警告:me/ujohn/.rvm/gems/[email protected]/bundler/gems/sidekiq-4ed6eba8aff1/lib/sidekiq/rails.rb:14:警告:頂層常量隊列由Sidekiq引用:: Client :: Queue,但sidekiq的隊列似乎工作正常。使用actionmailer處理電子郵件似乎中斷。 – JohnDel
這聽起來像一個錯誤,因爲你似乎在做正確的事情。我會提出這個問題作爲回購問題。 –