0

我一直在开发一个使用 restful 身份验证插件的 rails 应用程序。它需要新用户通过电子邮件验证激活他们的帐户。这一直有效,直到几个小时前,应用程序突然开始无法发送电子邮件。相反,我收到以下错误消息:

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

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

4

2 回答 2

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,它确实存在。

于 2009-06-30T23:02:50.663 回答
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 以从脚本/控制台发送电子邮件,它引发了错误数量的参数错误......</p>

于 2009-10-03T12:54:07.863 回答