2015-11-25 20 views
9

Sto creando uno script ruby ​​che controlla lo stato di risposta di un url e se è uguale a 504, invia una mail a un altro indirizzo email. Per qualche ragione, ottengo questo: /usr/lib/ruby/1.9.1/net/smtp.rb:960:in 'check_auth_response': 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbv9z (Net::SMTPAuthenticationError) I quadra hanno controllato i dati di autenticazione e sono validi. Forse ci può essere qualcosa di sbagliato nel codice:Ruby che invia posta via gmail smtp

require 'mail' 

options = { :address    => "smtp.gmail.com", 
      :port     => 587, 
      :user_name   => '<myusername>', 
      :password    => '<mypassword>', 
      :authentication  => 'plain', 
      :enable_starttls_auto => true } 

Mail.defaults do 
    delivery_method :smtp, options 
end 

Mail.deliver do 
     to '[email protected]' 
    from '[email protected]' 
    subject 'Test' 
    body 'Hurray!!! Test email!' 
end 

Oh anche, ho ricevuto l'avviso di Google che un'applicazione meno sicuro ha tentato di accedere al mio account, così ho istituito che le applicazioni meno sicure possono utilizzare il mio account.

+0

Spero che a risolvere questo e scrivere una buona risposta! Ho anche avuto problemi con questo in passato, risolto da un miracolo o da una diavoleria di Google, e immediatamente ho dimenticato tutto. – jphager2

risposta

14

Se siete non utilizzando l'autenticazione 2 Fattore

andare a questo link:

https://www.google.com/settings/security/lesssecureapps

e selezionare:

"L'accesso per le applicazioni meno sicure"

come da:

https://support.google.com/accounts/answer/6010255?hl=en

In questo caso è necessario utilizzare la normale e-mail e password per connettersi.

Se sono utilizzando 2 fattore di autenticazione

È necessario creare una password specifica app per la vostra applicazione. Attenersi alla seguente procedura:

  1. Vai a Gmail
  2. in alto a destra angolo clic sul tuo profilo icona e selezionare 'Account'
  3. Fare clic su 'Accedi & Security'
  4. Scorrere l' ' Accedi alla pagina di sicurezza & "Sicurezza" e c'è una sezione chiamata "Password per le app". Fare clic su di essa.
  5. Dovresti visualizzare un menu a discesa con l'etichetta "Seleziona app". Seleziona Mail.
  6. Per il menu a discesa "sul mio dispositivo" selezionare "Altro" e digitare commandline o qualsiasi altra cosa si voglia chiamare l'app.
  7. Fare clic su "Genera". Verrà generata una password. Copiare quella password e sostituire la password che si stava utilizzando nel vostro opzioni hash con la password generata:

    opzioni = {: address => "smtp.gmail.com", : port => 587, : USER_NAME => '', : password => '', : autenticazione => 'pianura', : enable_starttls_auto => true}

che dovrebbe essere esso. Ho appena provato questo e ha funzionato per me.

Assicurati anche che il tuo nome utente sia l'indirizzo email completo di Gmail.

si possono anche trovare i 'documenti ufficiali' qui: https://support.google.com/accounts/answer/185833?hl=en

+0

Beh, sembra che io sia sfortunato: "L'impostazione che stai cercando non è disponibile per il tuo account.". –

+0

Sembra che tu non stia usando 2FA. Ho aggiornato la mia risposta su come consentire a un'applicazione "meno sicura" di connettersi. Dovresti usare la tua password normale in questo caso. – rainkinz

+0

ottima risposta, grazie! –