Trilhos ActionMailer com o plugin de autenticação repousante não vai entregar o correio
-
21-08-2019 - |
Pergunta
Eu tenho trabalhado em uma aplicação rails que usa o plugin de autenticação repousante. Ela exige um novo usuário para ativar sua conta através da verificação de e-mail. Este tem vindo a trabalhar até algumas horas atrás, quando a aplicação de repente começou a falhar na entrega de e-mail. Em vez disso eu sou cumprimentado com a seguinte mensagem de erro:
undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac>
Eu revertido para uma revisão antiga, criou novos aplicativos com ActionMailer, trilhos reinstalados, reinstalado todos os plugins e pedras preciosas, mas as persistir erro. Alguém já viu este erro antes? Parece que eu preciso adicionar o método perform_delivery_SMTP ao modelo UserMailer, mas como e por quê? Obrigado.
Solução
Onde você configurar o seu cliente?
Eu estou supondo que o seu método de entrega é definido como este
ActionMailer::Base.delivery_method 'SMTP'
Use :smtp
em vez de 'SMTP'
ActionMailer assume que você vai usar :smtp
, :sendmail
ou :test
Ele usa que no método deliver!
como assim
__send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries
O que significa que quando delivery_method
é definido como 'SMTP' Ele vai tentar perform_delivery_SMTP
chamada, que não existe como você descobriu. Quando você usa o :smtp
símbolo que chama perform_delivery_smtp
, que não existe.
Outras dicas
Aqueles que têm lutado com fina ActionMailer trabalhando em servidor local (modo de desenvolvimento) e não funciona no modo de produção deve considerar seguinte link:
http://filiptepper.com/ 2009/02/11 /-dica fixação de smtp_tlsrb-for-ruby-187 /
Ele resolveu o meu problema, pode ser útil para os outros também. Basicamente, o problema é que “check_auth_args em Net :: SMTP leva argumentos diferentes em Ruby 1.8.7 (que eu estou usando para o desenvolvimento) e em Ruby 1.8.6 (estadiamento)”. E o pior é que ele não deixa um erro no arquivo production.log. Para verificar se era realmente o problema que eu tive que correr ActionMailer para enviar e-mail a partir do script / console onde se levantou o erro de número errado de argumentos ...