Net :: SMTPAuthenticationError durante l'invio di e-mail dall'app Rails (in ambiente di staging)


95

Sto inviando un'e-mail dalla mia applicazione Rails. Funziona bene nell'ambiente di sviluppo, ma non riesce a gestire. Ottengo il seguente errore:

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

Nota che il mio non ho un nome di dominio per la mia gestione temporanea.

Ecco le mie impostazioni in 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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => 'login'
}

Per favore aiuto.

Modificare.

Dopo aver aggiunto l' :tls => trueopzione ottengo

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

E poi ho cambiato la porta a 25 e ora ottengo questo (con 30 secondi di ritardo):

Timeout::Error (execution expired)

1
Ho copiato l'URL per errore (probabilmente google ci ha pensato in anticipo) nel browser. Inserita la mia password e nel pannello ho visto attivata la possibilità di effettuare richieste non solo da siti fidati.
zmii

Risposte:


249

Ho avuto lo stesso problema: le e-mail venivano inviate dallo sviluppo, ma non dalla produzione (dove stavo ricevendo Net::SMTPAuthenticationError). Questo mi ha portato a concludere che il problema non era con la configurazione della mia app, ma con Google.

Motivo : Google stava bloccando l'accesso da una posizione sconosciuta (app in produzione)

Soluzione : vai a http://www.google.com/accounts/DisplayUnlockCaptcha e fai clic su Continua (questo garantirà l'accesso per 10 minuti per la registrazione di nuove app). Successivamente la mia app in produzione ha iniziato a inviare e-mail;)


3
Questo è in realtà il modo corretto per risolverlo (anche se potrebbe mettere a rischio il tuo account). Ma funziona.
zakelfassi

40
Inoltre, non dimenticare di consentire l'accesso all'account qui :: google.com/settings/security/lesssecureapps
Chauskin Rodion

Sono stato in grado di evitare l' lesssecureappsimpostazione utilizzando l'autenticazione a più fattori e abilitando una password specifica per l'app per il mio server rails.
Chris Beck

1
Probabilmente è meglio usare un servizio come Mandrill per l'invio di email in un ambiente di produzione
Codebling

Ho attivato l' impostazione dell'account lesssecureapps e sono andato alla pagina DisplayUnlockCaptcha e ho premuto OK, ho inviato e-mail tramite binari ma ho ricevuto lo stesso errore Net::SMTPAuthenticationError ...ContinueSignIn.... Poi ho provato a fare lo stesso dopo 10 minuti e ha iniziato a funzionare.
Lev Lukomsky,

25

Questa soluzione sta funzionando per me:

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 => "xyz@gmail.com",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

È vero che Google bloccherà il tuo tentativo di accesso, ma puoi modificare le tue impostazioni su https://www.google.com/settings/security/lesssecureapps in modo che il tuo account non sia più protetto dai moderni standard di sicurezza.


C'è un modo per aggirare questo? È possibile registrare la tua app su Google, ad esempio?
jphager2

24

Risolto! Ho semplicemente cambiato la password per il mio account Gmail e in qualche modo gli errori sono scomparsi.

Dopo dozzine di modifiche, le impostazioni finali che ho ottenuto sono:

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 => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}

1
Grazie! Questo problema mi stava causando un sacco di mal di testa e alla fine quello che dovevo fare era cambiare la password del mio account Google dopo aver utilizzato queste impostazioni e aver impostato l'opzione Consenti app meno sicure nelle impostazioni dell'account Google.
Corey

Dopo aver impostato "Consenti app meno sicure" e aver detto a Google di fidarsi del mio dispositivo (IP del server) e aver atteso per oltre 24 ore ... una semplice modifica della password ha risolto i miei problemi di autenticazione Gmail. qualcuno in Google dovrebbe probabilmente risolverlo. ;)
Jason R

Stavo affrontando lo stesso problema. Avevo già abilitato lessecureapps ma non si risolverà. Ho semplicemente cambiato la mia password e ha funzionato a meraviglia. :)
Nikhil Sahu


13

La soluzione sopra ha fornito le impostazioni corrette (che avevo già) ma non ha risolto il problema. Dopo continui tentativi, ho continuato a ricevere lo stesso errore. È venuto fuori che ho dovuto "cancellare il CAPTCHA" dal web. Consulta la documentazione di Gmail per i dettagli.

Puoi anche saltare direttamente alla pagina "cancella il CAPTCHA" qui .


1
Link diretto alla pagina "cancella il CAPTCHA": accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

Molto più tardi, ma nel caso in cui possa aiutare qualcuno .. Ho appena chiamato il Centro assistenza di Google Apps e hanno chiesto di cambiare l'impostazione lesssecureapps (come tutti gli altri) ma anche di cambiare la porta a 465.

Nel mio caso, ha funzionato!



0

Ciao, questo ha funzionato anche per me e quindi se qualcuno ha ancora problemi provalo.

Assicurati di avere figaro nel tuo gemfile. Per salvare informazioni sensibili come nome utente e password come variabili di ambiente

gem 'figaro'

E nella tua configurazione / ambienti / sviluppo.rb, incolla i codici seguenti utilizzando smtp come metodo di consegna

 config.action_mailer.delivery_method = :smtp

Impostazioni SMTP per 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" }

Nella tua directory di configurazione crea un file chiamato application.yml e aggiungi i codici seguenti.

gmail_username: 'example@gmail.com' 
gmail_password: "your_example_email_password_here"

È necessario utilizzare l'e-mail e la password per l'autenticazione nel file.


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

0

Ho anche affrontato il problema e, dopo alcune ricerche nelle impostazioni di Gmail, ho trovato la soluzione:

  1. In Gmail, vai alle impostazioni.

  2. Seleziona la scheda "Inoltro e POP / IMAP".

  3. Nella sezione Accesso IMAP, seleziona "Abilita IMAP".


0

La risposta accettata sembra molto vecchia, non so se in quel momento esistesse la seguente (migliore) soluzione:

Ora, l'invio di e-mail funziona perfettamente!


0

Per risolvere questo problema:

  • Se vedi: Net :: SMTPAuthenticationError (535-5.7.8 Nome utente e password non accettati) , devi consentire alle app meno sicure di accedere al tuo account Google. Per abilitare l'accesso alle app meno sicure segui: https://myaccount.google.com/lesssecureapps? . Ma consentirà a tutte le app di accedere. Se vuoi personalizzarlo fai riferimento: https://support.google.com/a/answer/6260879?hl=it

  • Quindi potrebbe essere possibile ottenere Net :: SMTPAuthenticationError (534-5.7.14) , quindi per risolvere questo riferimento: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. Dopo di che fai clic su continua dalla pagina che verrai reindirizzato. Verificherà il tuo Captcha e la tua app verrà verificata per utilizzare il tuo account Google per inviare e-mail.

NOTA: assicurati di utilizzare le credenziali corrette del tuo account Gmail.

Se non sei disposto a consentire tutte le app, fai riferimento a: https://support.google.com/a/answer/6260879?hl=it . Dal link vai a Usa alternative ad app meno sicure , questo ti guiderà a un modo alternativo per consentire alle app meno sicure di accedere al tuo account Google.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.