2009-06-30 88 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从脚本/控制台发送电子邮件,它引发了错误的参数错误...