Los carriles ActionMailer con el plugin de autenticación reparador no entregar el correo
-
21-08-2019 - |
Pregunta
He estado trabajando en una aplicación de rieles que utiliza el complemento de autenticación reparador. Se requiere un nuevo usuario a activar su cuenta a través de la verificación de correo electrónico. Esto ha estado trabajando hasta hace unas horas, cuando la aplicación de repente comenzó a fallar en la entrega de correo electrónico. En su lugar me da la bienvenida con el mensaje de error siguiente:
undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac>
He vuelto a una revisión antigua, creado nuevas aplicaciones con actionmailer, reinstalado rieles, volver a instalar todos los plugins y gemas, pero persiste el error. ¿Alguien ha visto este error antes? Al parecer, tengo que añadir el método perform_delivery_SMTP al modelo UserMailer, sino cómo y por qué? Gracias.
Solución
Cuando configura el gestor de correo?
Supongo que el método de entrega se establece como esto
ActionMailer::Base.delivery_method 'SMTP'
Uso :smtp
en lugar de 'SMTP'
ActionMailer asume que va a utilizar :sendmail
, :test
o deliver!
Utiliza que en el método delivery_method
como tal
__send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries
lo que significa que cuando perform_delivery_SMTP
está ajustado a 'SMTP' se tratará de llamar perform_delivery_smtp
, que no existe como lo encontró a cabo. Cuando se utiliza el símbolo <=> que llama <=>, que no existe.
Otros consejos
Los que han estado luchando con ActionMailer funcionando bien en el servidor local (modo de desarrollo) y no funciona en el modo de producción deberían considerar siguiente enlace:
http://filiptepper.com/ 2009/02/11 / pista de fijación-smtp_tlsrb-para-ruby-187 /
Se resolvió mi problema, podría ser útil para otros también. Básicamente el problema es que “check_auth_args en Net :: SMTP toma diferentes argumentos en Ruby 1.8.7 (que estoy usando para el desarrollo) y en Ruby 1.8.6 (puesta en escena)”. Y lo peor es que no sale un error en el archivo production.log. Para verificar que realmente era el problema que tenía que ejecutar ActionMailer para enviar correo electrónico desde el guión / consola donde se levantó el error de número incorrecto de argumentos ...