Rails ActionMailer с плагином аутентификации restful не будет доставлять почту

StackOverflow https://stackoverflow.com/questions/1066403

Вопрос

Я работал над приложением rails, которое использует плагин аутентификации restful.Для этого новому пользователю необходимо активировать свою учетную запись посредством подтверждения по электронной почте.Это работало вплоть до нескольких часов назад, когда приложение внезапно начало сбоить при доставке электронной почты.Вместо этого меня встречает следующее сообщение об ошибке:

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

Я вернулся к старой версии, создал новые приложения с помощью actionmailer, переустановил rails, переустановил все плагины и драгоценные камни, но ошибка сохраняется.Кто-нибудь когда-нибудь видел эту ошибку раньше?Казалось бы, мне нужно добавить метод 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/hint-fixing-smtp_tlsrb-for-ruby-187/

Это решило мою проблему, возможно, было бы полезно и для других.В основном проблема заключается в том, что “check_auth_args в Net::SMTP принимает разные аргументы в Ruby 1.8.7 (который я использую для разработки) и в Ruby 1.8.6 (промежуточный)”.И хуже всего то, что это не оставляет ошибки в рабочей среде.файл журнала.Чтобы убедиться, что это действительно была проблема, мне пришлось запустить ActionMailer для отправки электронной почты из скрипта / консоли, где он выдал ошибку неправильного количества аргументов…

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top