2009-06-30 69 views
0

我一直在使用使用restful身份驗證插件的rails應用程序。它需要一個新用戶通過電子郵件驗證來激活他們的帳戶。直到幾個小時前,這個應用程序一直在運行,當應用程序突然開始在電子郵件傳遞上失敗。相反,我招呼着以下錯誤消息:帶有restful身份驗證插件的Rails ActionMailer不會傳遞郵件

undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac> 

我已經恢復到舊版本,創建新的應用程序使用的ActionMailer,重新安裝護欄,重新安裝所有的插件和寶石,但錯誤依然存在。有沒有人曾經見過這個錯誤?看起來我需要將perform_delivery_SMTP方法添加到UserMailer模型,但是如何以及爲什麼?謝謝。

回答

3

你在哪裏配置你的郵件?

我猜測你的交付方法設置這樣

ActionMailer::Base.delivery_method 'SMTP' 

使用:smtp,而不是 'SMTP'

的ActionMailer假定您將使用:smtp:sendmail:test

它使用deliver!方法中的那樣

__send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries 

這意味着當delivery_method設置爲'SMTP'時,它會嘗試呼叫perform_delivery_SMTP,這在您找到時不存在。當您使用符號:smtp時,它會調用perform_delivery_smtp,它確實存在。

+0

謝謝!這立即解決了問題。你是一個拯救生命的人。 – Anon 2009-07-01 01:23:11

0

這些誰一直在努力用的ActionMailer做工精細本地服務器(開發模式),而不是在生產模式下工作應考慮以下鏈接:

http://filiptepper.com/2009/02/11/hint-fixing-smtp_tlsrb-for-ruby-187/

它解決我的問題,可能是別人有幫助太。基本上問題是「Net :: SMTP中的check_auth_args在Ruby 1.8.7(我用於開發)和Ruby 1.8.6(分段)中使用不同的參數」。最糟糕的是它不會在production.log文件中留下錯誤。要驗證它確實是這個問題,我不得不運行ActionMailer從腳本/控制檯發送電子郵件,它引發了錯誤的參數錯誤...