是否有一種簡單的方法告訴設計通過 delayed_job發送所有電子郵件?從設計發送延遲的電子郵件
回答
或者,而是採用了延遲::梅勒的寶石,你可以很輕鬆地實現和使用自己的的ActionMailer「分配方法」,一說......
- 攔截郵件傳遞從的ActionMailer
- 存儲電子郵件的表(可選)
- 創建一個延遲::作業引用存儲的電子郵件
- 提供在執行延遲工作
做沿東西線存儲的電子郵件:
# in config/application.rb
ActionMailer::Base.add_delivery_method :queued, Mail::QueuedDelivery
# in config/environment.rb (or one of the config/environments/*.rb files)
config.action_mailer.delivery_method = :queued # ie. Mail::QueuedDelivery
# in lib/mail/queued_delivery.rb
module Mail
class QueuedDelivery
def initialize(values = {})
# (optional)
end
def deliver!(mail)
email = Email.create!(:delivery_handler => mail.delivery_handler.name, :message => mail.to_s)
Delayed::Job.enqueue Jobs::Email::DeliverEmail.new(email.id)
end
end # class QueueDelivery
end # module Mail
您需要執行的Delayed :: Job然後...
- 從數據庫中檢索存儲的電子郵件 -
email = ::Email.find_by_id(email_id)
- 通過郵件寶石交付電子郵件 -
Mail::Message.new(email.message).deliver
就是這樣......希望這幫助!
我不知道Devise是什麼,但我想它是你不想修改的第三方gem。 嘗試delayed_job_mailer。您可以通過將它們修補以使用delayed_job來擴展Devise郵件程序。
class SomeExistingMailer
include Delayed::Mailer
end
,或者如果你想通過延遲工作在默認情況下將所有的應用程序的電子郵件:
# config/initializers/delayed_mailer.rb
class ActionMailer::Base
include Delayed::Mailer
end
這是否最終工作?我正在尋找相同的解決方案 – AnApprentice 2010-11-08 16:51:21
我試過你的第二個建議,如果它能夠工作,那將是驚人的,但遇到錯誤「/Users/bhellman/Sites/cline/config/initializers/delayed_mailer.rb:3:未初始化的常量Delayed: :梅勒(NameError)「 – AnApprentice 2010-11-08 16:52:22
在我看來,這延遲郵件寶石沒有加載。你有沒有在Gemfile中指定它,最終在environment.rb中需要它 – gertas 2010-11-09 09:56:16
我發現以上都不適合我。我正在使用Devise 2.0.4和Rails 3.2.2 with delayed_job_active_record 0.3.2
devise實際上談論在代碼的註釋中做這樣的事情的方式是覆蓋User類中的方法。因此,我解決它像這樣,它完美的作品:
應用程序/模型/ User.rb
def send_on_create_confirmation_instructions
Devise::Mailer.delay.confirmation_instructions(self)
end
def send_reset_password_instructions
Devise::Mailer.delay.reset_password_instructions(self)
end
def send_unlock_instructions
Devise::Mailer.delay.unlock_instructions(self)
end
- 1. NodeJS發送延遲電子郵件
- 2. 如何延遲發送電子郵件?
- 3. 發送電子郵件沒有延遲
- 4. 延遲發送電子郵件
- 5. 延遲發送電子郵件與PHP
- 6. 延遲作業未發送特定電子郵件設置的電子郵件
- 7. 從控制器發送電子郵件時發生延遲
- 8. Laravel延遲電子郵件觸發
- 9. 延遲不使用Thread.Sleep的電子郵件的發送c#
- 10. 設計不發送電子郵件
- 11. 配置設計發送電子郵件
- 12. Sidekiq延遲寄件人不發送電子郵件
- 13. 發送的電子郵件到達時數小時延遲
- 14. 可能延遲Jenkins中的電子郵件發送?
- 15. 每個MySQL條目的延遲發送自動電子郵件
- 16. Heroku:多次延遲發送電子郵件的作業
- 17. Google Apps腳本 - 延遲48小時發送電子郵件
- 18. 延遲工作:明天發送電子郵件
- 19. 電子郵件排隊和發送沒有延遲
- 20. 使用MailMessage和SmtpClient或MessageQueue延遲發送電子郵件
- 21. 發送延遲電子郵件軌對heroku
- 22. 延遲發送電子郵件使用codeigniter
- 23. django推遲發送電子郵件?
- 24. 推遲發送電子郵件(展望)
- 25. 發送電子郵件從子域上設計不工作
- 26. 設計異步/延期工作 - 發送延遲工作的自定義電子郵件?
- 27. 發送電子郵件從
- 28. 從我的應用程序發送電子郵件時,如何避免延遲?
- 29. 我怎麼能延遲PHP郵件發送大量電子郵件
- 30. Rails設計發送電子郵件到錯誤的電子郵件地址
http://stackoverflow.com/questions/4125564/rails-devise-delay編輯 – Zabba 2011-03-15 08:18:08