我一直在使用的宁静的认证插件一个Rails应用程序。它需要一个新的用户通过电子邮件验证,激活他们的帐户。这一直工作,直到几个小时前,当应用程序突然开始失败的电子邮件传送。代替我迎接以下错误消息:

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

我已经恢复到旧版本,创建新的应用程序使用的ActionMailer,重新安装护栏,重新安装所有的插件和宝石,但错误依然存在。有没有人见过这个错误之前?这似乎是我需要的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_method设置为“SMTP”,它会尝试打电话perform_delivery_SMTP,它不存在,你发现了。当使用符号:smtp它调用perform_delivery_smtp,其确实存在。

其他提示

这些谁一直在努力与工作的ActionMailer本地服务器(开发模式)罚款,而不是在生产模式下工作应考虑以下链接:

http://filiptepper.com/ 2009/02/11 /提示的固定-smtp_tlsrb换红宝石-187 /

这解决了我的问题,可能是别人也有帮助。基本问题是,“check_auth_args中的Net :: SMTP采取不同论点的Ruby 1.8.7(我使用它的发展)和红宝石1.8.6(分期)”。而最糟糕的是,它不会在production.log文件留下一个错误。为了验证它确实是我不得不跑的ActionMailer从脚本/控制台发送电子邮件的地方提出了错误的参数数目......

的错误的问题
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top