ActionMailer non invia posta nello sviluppo Rails 4

Perché questo mailer non invia alcuna posta? (O qualche idea per il debugging?)

In my_app / config / environments / development.rb ho questo codice:

config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'my_app.com', user_name: ENV['GMAIL_USERNAME'], password: ENV['GMAIL_PASSWORD'], authentication: 'plain', enable_starttls_auto: true } 

Poi sul mio computer locale in ~ / .bash_profile ho questo codice:

 export GMAIL_USERNAME='[email protected]_app.com' export GMAIL_PASSWORD='***' 

Quando $ env nel mio terminale, vedo che entrambe le variabili di ambiente sono impostate correttamente.

Ho anche riavviato il mio server di rotaie.

Dovresti aggiungere

 config.action_mailer.perform_deliveries = true 

di default è false, impedendo l’invio di mail dal tuo ambiente di sviluppo …

Per chi non usa smtp, cambiare il metodo di consegna in sendmail mi ha aiutato oltre a impostare esplicitamente le consegne da eseguire:

 config.action_mailer.delivery_method = :sendmail 

Se hai problemi nell’invio di email dalla console, devi chiamare il metodo di consegna sulla tua posta.

 MyMailer.create_email.deliver 

Quindi l’ho capito. Avere la riga ActionMailer::Base.delivery_method = :smtp in config/environment.rb sovrascrive ActionMailer::Base.delivery_method = :test in config/environments/test.rb

Quindi, elimina quella riga, ActionMailer::Base.delivery_method = :smtp da config/environment.rb e posizionalo in config/environments/production.rb . Ciò consente di posizionare ActionMailer::Base.delivery_method = :test in config/environments/test.rb e la versione desiderata in config/environments/development.rb . Ho fatto development.rb :test mentre popolavo il mio database usando Faker e lo :smtp quindi ero sicuro che le email vere fossero inviate come controllo aggiuntivo.

Nota: è necessario riavviare il server affinché queste modifiche abbiano effetto.

Un’altra nota: le attuali istruzioni SendGrid di Heroku ( https://devcenter.heroku.com/articles/sendgrid ) inseriscono il codice di configurazione SendGrid Heroku in un nuovo file config/initializers/mail.rb che probabilmente richiederà la rimozione dell’ultima riga e il posizionamento del versione desiderata in ogni config/environments/[production.rb, development.rb, test.rb]