Net :: SMTPAuthenticationError lors de l'envoi d'e-mails depuis l'application Rails (sur l'environnement de préparation)

95

J'envoie un e-mail depuis mon application Rails. Cela fonctionne bien sur l'environnement de développement, mais échoue lors de la mise en scène. J'obtiens l'erreur suivante:

Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6)

Notez que je n'ai pas de nom de domaine pour ma mise en scène.

Voici mes paramètres dans staging.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here:80" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80'
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => 'login'
}

S'il vous plaît, aidez.

Éditer.

Après avoir ajouté l' :tls => trueoption, j'obtiens

OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?)

Et puis j'ai changé le port en 25 et maintenant j'obtiens ceci (avec 30 secondes de retard):

Timeout::Error (execution expired)
eagor
la source
1
J'ai copié l'url par erreur (google a probablement pensé à l'avance pour nous) dans le navigateur. J'ai entré mon mot de passe et dans le panneau que j'ai vu, j'ai changé la possibilité de faire des demandes non seulement à partir de sites de confiance.
zmii

Réponses:

249

J'ai eu le même problème: les e-mails provenaient du développement, mais pas de la production (où je recevais Net::SMTPAuthenticationError). Cela m'a conduit à conclure que le problème n'était pas avec la configuration de mon application, mais avec Google.

Raison : Google bloquait l'accès depuis un emplacement inconnu (application en production)

Solution : accédez à http://www.google.com/accounts/DisplayUnlockCaptcha et cliquez sur Continuer (cela donnera un accès de 10 minutes pour l'enregistrement de nouvelles applications). Après cela, mon application en production a commencé à envoyer des e-mails;)

Gee-Bee
la source
3
C'est en fait la bonne façon de le résoudre (bien que cela puisse mettre votre compte en danger). Mais ça marche.
zakelfassi
40
N'oubliez pas non plus d'autoriser l'accès au compte ici :: google.com/settings/security/lesssecureapps
Chauskin Rodion
J'ai pu éviter le lesssecureappsparamètre en utilisant l'authentification multifacteur et en activant un mot de passe spécifique à l'application pour mon serveur rails.
Chris Beck
1
Il est probablement préférable d'utiliser un service comme Mandrill pour envoyer des e-mails dans un environnement de production
Codebling
J'ai activé le paramètre de compte lesssecureapps et je suis allé à la page DisplayUnlockCaptcha et j'ai appuyé sur OK, envoyé un e-mail via des rails mais j'ai reçu la même erreur Net::SMTPAuthenticationError ...ContinueSignIn.... Ensuite, j'ai essayé de faire de même après 10 minutes et cela a commencé à fonctionner.
Lev Lukomsky
25

Cette solution fonctionne pour moi:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host:'localhost', port: '3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'localhost:3000',
      :user_name => "[email protected]",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Il est vrai que Google bloquera votre tentative de connexion, mais vous pouvez modifier vos paramètres sur https://www.google.com/settings/security/lesssecureapps afin que votre compte ne soit plus protégé par les normes de sécurité modernes.

AHK
la source
Y a-t-il un moyen de contourner cela? Est-il possible d'enregistrer votre application sur Google, par exemple?
jphager2
24

Résolu! J'ai simplement changé le mot de passe de mon compte Gmail et les erreurs ont disparu.

Après des dizaines de changements, les paramètres finaux avec lesquels je me suis retrouvé sont:

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80',
      :user_name => "[email protected]",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}
eagor
la source
1
Je vous remercie! Ce problème me causait beaucoup de maux de tête et, à la fin, je devais modifier le mot de passe de mon compte Google après avoir utilisé ces paramètres et défini l'option Autoriser les applications moins sécurisées dans les paramètres du compte Google.
Corey
Après avoir défini `` Autoriser les applications moins sécurisées '' et dire à Google de faire confiance à mon appareil (IP du serveur) et d'attendre plus de 24 heures ... un simple changement de mot de passe a résolu mes problèmes d'authentification Gmail. quelqu'un chez google devrait probablement résoudre ce problème. ;)
Jason R
J'étais confronté au même problème. J'avais déjà activé lessecureapps mais cela ne résoudra pas. J'ai simplement changé mon mot de passe et cela a fonctionné comme un charme. :)
Nikhil Sahu
13

La solution ci-dessus a fourni les paramètres corrects (que j'avais déjà) mais n'a pas résolu le problème. Après des tentatives continues, j'ai continué à obtenir la même erreur. Il s'avère que j'ai dû "effacer le CAPTCHA" du Web. Consultez la documentation de gmail pour plus de détails.

Vous pouvez également accéder directement à la page "Effacer le CAPTCHA" ici .

Désolé-Im-a-N00b
la source
1
Lien direct vers la page "
Effacer
2

Beaucoup plus tard, mais juste au cas où cela aiderait n'importe qui. Je viens d'appeler le centre d'aide Google Apps et ils ont demandé de modifier le paramètre lesssecureapps (comme tout le monde), mais aussi de changer le port sur 465.

Dans mon cas, ça a fait l'affaire!

Alejandro Sherwell
la source
0

Bonjour, cela a également fonctionné pour moi et donc si quelqu'un a encore un problème, essayez-le.

Assurez-vous que vous avez figaro dans votre gemfile. Pour enregistrer des informations sensibles telles que le nom d'utilisateur et le mot de passe en tant que variables d'environnement

gem 'figaro'

Et dans votre config / environnements / development.rb, collez les codes ci-dessous en utilisant smtp comme méthode de livraison

 config.action_mailer.delivery_method = :smtp

Paramètres SMTP pour Gmail

  config.action_mailer.smtp_settings =
  {
    :address=> "smtp.gmail.com",
    :port => 587,
    :user_name => ENV['gmail_username'],
    :password=> ENV['gmail_password'],
    :authentication=> "plain",
    :enable_starttls_auto=>true
  }


config.action_mailer.default_url_options = { host: "locahost:3000" }

Dans votre répertoire de configuration, créez un fichier appelé application.yml et ajoutez les codes ci-dessous.

gmail_username: '[email protected]' 
gmail_password: "your_example_email_password_here"

Vous devez utiliser votre adresse e-mail et votre mot de passe pour vous authentifier dans le fichier.

cooxy
la source
config.action_mailer.default_url_options = {host: "localhost: 3000"}
cooxy
0

J'ai également fait face au problème, et après quelques recherches sur les paramètres de Gmail, j'ai trouvé la solution:

  1. Dans Gmail, accédez aux paramètres.

  2. Sélectionnez l'onglet "Transfert et POP / IMAP".

  3. Dans la section Accès IMAP, sélectionnez "Activer IMAP".

Shrinivas
la source
0

La réponse acceptée semble très ancienne, je ne sais pas si à ce moment-là la (meilleure) solution suivante existait:

Désormais, l'envoi d'e-mails fonctionne parfaitement!

ubugnu
la source
0

Pour résoudre ce problème:

  • Si vous voyez: Net :: SMTPAuthenticationError (535-5.7.8 Nom d'utilisateur et mot de passe non acceptés.) , Vous devez autoriser les applications moins sécurisées à se connecter à votre compte Google. Pour activer la connexion aux applications moins sécurisées, suivez: https://myaccount.google.com/lesssecureapps? . Mais permettra à toutes les applications de se connecter. Si vous souhaitez le personnaliser, consultez: https://support.google.com/a/answer/6260879?hl=fr

  • Ensuite, peut-être que vous obtiendrez Net :: SMTPAuthenticationError (534-5.7.14) , donc pour résoudre ce problème, reportez-vous à: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Après cela, cliquez sur Continuer à partir de la page que vous êtes redirigé. Il vérifiera votre Captcha et votre application sera vérifiée pour utiliser votre compte Google pour envoyer des e-mails.

REMARQUE: veuillez vous assurer que vous utilisez les informations d'identification correctes de votre compte Gmail.

Si vous ne souhaitez pas autoriser toutes les applications, veuillez consulter: https://support.google.com/a/answer/6260879?hl=fr . À partir du lien, accédez à Utiliser des alternatives aux applications moins sécurisées , cela vous guidera vers une autre façon d' autoriser les applications moins sécurisées à accéder à votre compte Google.

Yash Dubey
la source
-1

J'ai eu le même problème et après quelques essais et erreurs, je suis arrivé à cette résolution qui est une option à activer dans google:

Cliquez sur https://www.google.com/settings/u/0/security/lesssecureapps

Activez ici «Accès pour les applications moins sécurisées» en vous connectant avec l'adresse e-mail que vous avez fournie dans la configuration smtp.

Mirza Vu
la source