web-dev-qa-db-fra.com

Net :: SMTPAuthenticationError lors de l'envoi d'e-mails depuis Rails app (dans un environnement de stockage intermédiaire)

J'envoie un courrier électronique à partir de mon Rails). Il fonctionne bien dans un environnement de développement, mais échoue lors de la copie intermédiaire. Le message d'erreur suivant s'affiche:

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.

Edit.

Après avoir ajouté :tls => true option je reçois

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

Et puis j'ai changé le port à 25 et maintenant je reçois ceci (avec un délai de 30 secondes):

Timeout::Error (execution expired)
91
eagor

J'ai eu le même problème: les courriels étaient envoyés par le développement, mais pas par la production (où j'obtenais Net::SMTPAuthenticationError). Cela m'a amené à conclure que le problème n'était pas lié à la configuration de mon application, mais à 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 accordera l'accès pendant 10 minutes pour enregistrer de nouvelles applications). Après cela, mon application en production a commencé à envoyer des emails;)

237
Gee-Bee

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 à partir de https://www.google.com/settings/security/lesssecureapps afin que votre compte ne soit plus protégé par normes de sécurité.

24
A H K

Résolu! Je simplement mot de passe changé pour mon compte Gmail et en quelque sorte les erreurs ont disparu.

Après une douzaine de modifications, les derniers paramètres que j'ai obtenus sont les suivants:

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
}
23
eagor
14
aashish

La solution ci-dessus fournissait les paramètres corrects (que j'avais déjà) mais ne résolvait pas le problème. Après des tentatives répétées, j'ai continué à avoir la même erreur. Il s'est avéré que je devais "nettoyer le CAPTCHA" du Web. Voir le documentation gmail pour plus de détails.

Vous pouvez aussi aller directement à la page "vider le CAPTCHA" ici .

13
Sorry-Im-a-N00b

Beaucoup plus tard, mais au cas où cela pourrait aider quelqu'un .. Appelez simplement le centre d’aide Google Apps et ils vous ont demandé de modifier le paramètre lesssecureapps (comme tout le monde), mais également de modifier le port en 465.

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

2

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

Maintenant, envoyer des emails fonctionne parfaitement!

0
ubugnu

J'ai eu le même problème.


Solution:

0
Benyamin Jafari

J'ai également rencontré le problème et, après quelques recherches sur 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".

0
Shrinivas

Bonjour, cela a également fonctionné pour moi. Si quelqu'un a toujours 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 nommé application.yml et ajoutez les codes ci-dessous.

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

Vous devez utiliser votre email et votre mot de passe pour vous authentifier dans le fichier.

0
cooxy