Ruby on rails 带有restful身份验证插件的Rails ActionMailer赢得了';不要投递邮件

Ruby on rails 带有restful身份验证插件的Rails ActionMailer赢得了';不要投递邮件,ruby-on-rails,ruby-on-rails-plugins,actionmailer,Ruby On Rails,Ruby On Rails Plugins,Actionmailer,我一直在开发一个使用restful身份验证插件的rails应用程序。它要求新用户通过电子邮件验证激活其帐户。直到几个小时前,应用程序突然开始在发送电子邮件时失败,这种情况才开始出现。相反,我收到了以下错误消息: undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac> 未定义的方法“执行\u传递\u SMTP”# 我已经恢复到旧版本,用actionmailer创建了新的应用程序,重新安装了rails

我一直在开发一个使用restful身份验证插件的rails应用程序。它要求新用户通过电子邮件验证激活其帐户。直到几个小时前,应用程序突然开始在发送电子邮件时失败,这种情况才开始出现。相反,我收到了以下错误消息:

 undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac>
未定义的方法“执行\u传递\u SMTP”#

我已经恢复到旧版本,用actionmailer创建了新的应用程序,重新安装了rails,重新安装了所有插件和gems,但错误依然存在。以前有人见过这个错误吗?似乎我需要将perform_delivery_SMTP方法添加到UserMailer模型中,但是如何以及为什么?谢谢。

您在哪里配置邮件程序

我猜你们的送货方式是这样设置的

ActionMailer::Base.delivery_method 'SMTP'
使用
:smtp
代替“smtp”

ActionMailer假定您将使用
:smtp
:sendmail
:test

它在
deliver中使用它这样的方法

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

这意味着当
delivery\u method
设置为“SMTP”时,它将尝试调用
perform\u delivery\u SMTP
,而您发现它并不存在。当您使用符号
:smtp
时,它会调用
执行\u传递\u smtp
,该符号确实存在。

您在哪里配置邮件程序

我猜你们的送货方式是这样设置的

ActionMailer::Base.delivery_method 'SMTP'
使用
:smtp
代替“smtp”

ActionMailer假定您将使用
:smtp
:sendmail
:test

它在
deliver中使用它这样的方法

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

这意味着当
delivery\u method
设置为“SMTP”时,它将尝试调用
perform\u delivery\u SMTP
,而您发现它并不存在。当您使用符号<代码>:SMTP 时,它调用了<代码> PrimulyPurvivySMTP>/代码>,确实存在。

< P>那些在本地服务器(开发模式)上工作得很好而不在生产模式下工作的ActMaMeLee的人应该考虑以下链接:


它解决了我的问题,可能对其他人也有帮助。基本上,问题在于“Net::SMTP中的check_auth_args在Ruby 1.8.7(我用于开发)和Ruby 1.8.6(登台)中采用不同的参数”。最糟糕的是它没有在production.log文件中留下错误。为了验证它是否真的是问题,我必须运行ActoMaMeLe从脚本/控制台发送电子邮件,它引起错误的参数数的错误……

< P>那些在本地服务器(开发模式)上工作得很好而不在生产模式下工作的ActMaMeLee的人应该考虑以下链接:


它解决了我的问题,可能对其他人也有帮助。基本上,问题在于“Net::SMTP中的check_auth_args在Ruby 1.8.7(我用于开发)和Ruby 1.8.6(登台)中采用不同的参数”。最糟糕的是它没有在production.log文件中留下错误。为了验证这是否真的是问题所在,我必须运行ActionMailer从脚本/控制台发送电子邮件,在那里它引发了错误数量的参数…

谢谢!这立即解决了问题。你是个救生员,谢谢你!这立即解决了问题。你是个救生员。