Rails ActionMailer avec le plug-in d'authentification reposant ne sera pas livrer le courrier
-
21-08-2019 - |
Question
Je travaille sur une application de rails qui utilise le plug-in d'authentification reposant. Il a besoin d'un nouvel utilisateur d'activer leur compte grâce à la vérification e-mail. Cela a travaillé jusqu'à il y a quelques heures, lorsque l'application a soudainement commencé à échouer sur la livraison de courrier électronique. Au lieu de cela, je suis accueilli avec le message d'erreur suivant:
undefined method `perform_delivery_SMTP' for #<UserMailer:0x28ec7ac>
Je suis revins à une ancienne révision, créé de nouvelles applications avec actionmailer, réinstallées rails, réinstallées tous les plugins et les pierres précieuses, mais l'erreur persiste. Quelqu'un at-il jamais vu cette erreur avant? Il semblerait que je dois ajouter la méthode perform_delivery_SMTP au modèle UserMailer, mais comment et pourquoi? Merci.
La solution
Si vous configurez votre logiciel de messagerie?
Je suppose que votre mode de livraison est défini comme celui-ci
ActionMailer::Base.delivery_method 'SMTP'
Utilisez :smtp
au lieu de 'SMTP'
ActionMailer suppose que vous utiliserez :sendmail
, ou :test
deliver!
Il utilise que dans la méthode comme si delivery_method
__send__("perform_delivery_#{delivery_method}", mail) if perform_deliveries
ce qui signifie que lorsque est réglé sur perform_delivery_SMTP
« SMTP », il essaiera d'appeler perform_delivery_smtp
, qui n'existe pas comme vous avez découvert. Lorsque vous utilisez le symbole qu'il appelle <=> <=>, qui n'existe.
Autres conseils
Ceux qui ont lutté avec le travail ActionMailer bien sur serveur local (mode de développement) et ne fonctionne pas en mode de production devrait envisager lien suivant:
http://filiptepper.com/ 2009/02/11 / indice de fixation-smtp_tlsrb-à-ruby-187 /
Il a résolu mon problème, pourrait être utile pour les autres aussi. Fondamentalement, le problème est que « dans check_auth_args Net :: SMTP prend des arguments en Ruby 1.8.7 (que je me sers pour le développement) et Ruby 1.8.6 (mise en scène) ». Et la pire chose est qu'il ne laisse pas d'erreur dans le fichier production.log. Pour vérifier qu'il était vraiment le problème que je devais courir ActionMailer pour envoyer des courriels à partir du script / console où il a soulevé l'erreur de nombre incorrect d'arguments ...