我試圖推遲通知電子郵件發送給用戶註冊我的應用程序。電子郵件使用ActionMailer
發送,我撥打InitMailer
。我試圖推遲工作的方式是使用collectiveidea的delayed_job
https://github.com/collectiveidea/delayed_job。要做到這一點,你可以看到,我定義方法initial_email
後指定handle_asynchronously
:如何使用delayed_job使Rails 3.0 ActionMailer異步運行?遇到參數錯誤
class InitMailer < ActionMailer::Base
default :from => "[email protected]"
def initial_email(user)
@user = user
@url = "http://www.blahblahblah.com"
mail(:to => user.email,
:subject => "Welcome to my website!"
)
end
handle_asynchronously :initial_email
end
不過,我遇到一個參數錯誤在我的日誌文件"delayed_job.log"
:
Class#initial_email failed with ArgumentError: wrong number of arguments (1 for 0) - 5
failed attempts
爲了您的信息,電子郵件是使用該線路發送到控制器:
@user = InitUser.new(params[:init_user])
InitMailer.delay.initial_email(@user)
此外,當我設置我的代碼沒有延遲時,電子郵件w (除了它減慢了我的應用程序等待Gmail服務器的事實)
這裏的錯誤在哪裏?我怎樣才能讓延遲郵件正確發送?
謝謝!這是我的煩惱的答案。希望我和像yoU這樣的人一起工作! – geb2011
太棒了。我只是浪費了2天的時間來解決這個問題(也是一個攔截器導致失敗的問題,Gmail不希望接受來自我的開發環境的電子郵件)。 – Clay
我會用Mandrill代替Gmail發送電子郵件,即使是在開發環境中。 – Dean