2014-09-16 9 views
39

Sto provando a creare un modulo di contatto in Rails 4. Ho fatto un po 'di ricerche qui e sono riuscito a far funzionare la maggior parte delle cose. (seguito dal lavoro di @ sethfri qui Contact Form Mailer in Rails 4)Rails 4, come configurare correttamente le impostazioni smtp (gmail)

In questo momento sono in grado di compilare la casella del modulo e premere invia. Nel mio server delle rotaie dice che la posta era in uscita al mio indirizzo email, ma non ricevo nulla nella mia casella di Gmail, quindi penso che le mie impostazioni smtp non siano corrette. Le mie impostazioni SMTP sono:

... config/ambienti/development.rb

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.perform_deliveries = true 

    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :address => "smtp.gmail.com", 
    :port => "587", 
    :domain => "mydomain.net", 
    :user_name => "[email protected]", 
    :password => "myGmailPassword", 
    :authentication => "plain", 
    :enable_starttls_auto => true 
    } 

Inoltre ho aggiunto in .../config/initializers/smtp_settings.rb

ActionMailer::Base.smtp_settings = { 
    :address => "smtp.gmail.com", 
    :port => "587", 
    :domain => "mydomain.net", 
    :user_name => "[email protected]", 
    :password => "gmailPassword", 
    :authentication => "plain", 
    :enable_starttls_auto => true 
} 

Cosa mi sfugge/faccio male? Ho giocato un paio di cose (ho cambiato default_url nella porta 1025, cambiato: port => "587" in: port => 587) senza successo.

Grazie per l'aiuto!

+1

Hai controllato la cartella spam nell'account Gmail? –

+0

controlla prima la cartella inviata del tuo account Gmail – fengd

+0

Ehi, sì ho controllato la mia cartella di invio e le cartelle spam sia sull'invio di email che su quelle di ricezione (anche un account gmail) – ResrieC

risposta

46

Devi impostare il dominio correttamente. Attualmente nel codice pubblicato il suo "mydomain.net". Cambialo in gmail.com se vuoi inviarlo via gmail.

config.action_mailer.smtp_settings = { 
    address:    'smtp.gmail.com', 
    port:     587, 
    domain:    'gmail.com', 
    user_name:   '[email protected]', 
    password:    'yourpassword', 
    authentication:  :plain, 
    enable_starttls_auto: true 
} 
+1

Ehi, ho dato a questo uno scatto, provato con la porta 587 tra virgolette e senza virgolette, e nessuno dei due sta funzionando. – ResrieC

+10

Modificare il valore della chiave ': authentication' da': plain' a ': login'. Ha funzionato per me in quel modo, usando i binari 4. Il dominio – Throoze

+0

ovviamente definisce il dominio-Nome che puoi usare all'interno o il tuo Mail per ricollegarlo al client che invia! Questa risposta dovrebbe essere corretta o cancellata! – wegginho

0

Google consiglia di utilizzare OAuth 2.0 per il processo di accesso. Questa configurazione è "non così sicura" per google, ma lo tollerano. Devi consentire "connessioni meno sicure" nelle impostazioni del tuo account Google o utilizzare la modalità OAuth. https://developers.google.com/identity/protocols/OAuth2

La loro libreria di rubini è ancora alfa. Sembra che ci siano alcune gemme che estendono ActionMailer per OAuth, ma non le ho mai usate.

+2

L'autore sta parlando di inviare e-mail tramite il server SMTP di Gmail, lo sai? Questo non ha nulla a che fare con OAuth. – idmean

+0

E la risposta è ancora valida. Per poter utilizzare SMTP è necessario configurare per abilitare "client meno sicuri". L'alternativa (dal punto di vista di Google) è di non usare affatto SMTP. L'intento principale dell'autore sembra essere quello di far funzionare la consegna delle email. SMTP è semplicemente voluto * sembra * essere necessario. – NobodysNightmare

29

Se si verificano errori come Net :: SMTPAuthenticationError durante l'utilizzo di Gmail per l'invio di e-mail (comune per gli account Google Apps), visitare il proprio gmail settings e abilitare applicazioni meno sicure per far funzionare l'applicazione.

+0

Grazie per questo suggerimento. Google ha abilitato questa opzione sul mio account e le email hanno immediatamente smesso di scorrere. Questo ha risolto il problema. – CodeSmith

+0

Ho attivato password meno sicure e ho fatto anche l'https://accounts.google.com/b/0/DisplayUnlockCaptcha. La mia app di produzione continua a rifiutare le credenziali. Sono passato da Linode a Heroku e questo problema è sorto quando l'interruttore è stato creato. Qualche idea sul motivo per cui si verificherebbe ancora dopo aver attivato app meno sicure e aver fatto anche DisplayUnlockCaptcha? – Matt

3

Dopo poche ore per cercare come farlo funzionare per me, trovo il modo di farlo funzionare. Per me stesso, avevo bisogno di fare la verifica in due passaggi e utilizzare la password dell'applicazione Gmail

Quando abiliti la verifica in due passaggi (nota anche come autenticazione a due fattori), aggiungi un ulteriore livello di sicurezza al tuo account. Accedi con qualcosa che conosci (la tua password) e qualcosa che hai (un codice inviato al tuo telefono).

Impostare 2-fase di verifica

  1. Vai alla pagina 2-Step Verification. Potrebbe essere necessario accedere al tuo account Google.
  2. Nella casella "Verifica in due passaggi" sulla destra, selezionare Avvia configurazione.
  3. Seguire la procedura di installazione dettagliata.

la password Un'App è un codice di 16 cifre che dà un permesso un'applicazione o un dispositivo per accedere al tuo account Google. Se utilizzi la verifica in due passaggi e visualizzi un errore "password errata" quando provi ad accedere al tuo account Google, una password per l'app potrebbe risolvere il problema. La maggior parte del tempo, si dovrà solo inserire una password di App volta per ogni applicazione o dispositivo, quindi non preoccuparti di memorizzare lo

Come generare una password per l'app

  1. Visita la tua pagina App passwords. Potrebbe esserti chiesto di accedere al tuo account Google.
  2. In basso, fai clic su Seleziona app e scegli l'app che stai utilizzando.
  3. Fai clic su Seleziona dispositivo e scegli il dispositivo che stai utilizzando.
  4. Selezionare Genera.
  5. Seguire le istruzioni per inserire la password dell'app (il codice di 16 caratteri nella barra gialla) sul dispositivo.
  6. Seleziona Fine