with rails for ruby-on-rails ruby-on-rails-4 actionmailer

ruby on rails - for - ActionMailer no envía correo en desarrollo Rails 4



sendgrid with actionmailer (4)

¿Por qué este correo no envía ningún correo? (¿Alguna idea para depurar?)

En my_app / config / environments / development.rb tengo este código:

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 }

Luego en mi computadora local en ~ / .bash_profile tengo este código:

export GMAIL_USERNAME=''blah@my_app.com'' export GMAIL_PASSWORD=''***''

Cuando ejecuto $ env en mi terminal, veo que ambas variables de entorno están configuradas correctamente.

También reinicié mi servidor de rieles.


Así que lo he descubierto. Tener la línea ActionMailer::Base.delivery_method = :smtp en config/environment.rb anula ActionMailer::Base.delivery_method = :test en config/environments/test.rb

Por lo tanto, elimine esa línea, ActionMailer::Base.delivery_method = :smtp from config/environment.rb y colóquela en config/environments/production.rb . Eso le permite colocar ActionMailer::Base.delivery_method = :test en config/environments/test.rb y la versión que desee en config/environments/development.rb . Hice development.rb :test mientras llenaba mi base de datos usando Faker y lo cambiaba a :smtp así que estaba seguro de que los correos electrónicos reales se enviaban como una verificación adicional.

Nota: debe reiniciar su servidor para que estos cambios surtan efecto.

Otra nota: las instrucciones SendGrid actuales de Heroku ( https://devcenter.heroku.com/articles/sendgrid ) ponen el código de configuración SendGrid Heroku en un nuevo archivo config/initializers/mail.rb que probablemente requerirá eliminar su última línea y colocar el versión deseada en cada config/environments/[production.rb, development.rb, test.rb]


Deberías agregar

config.action_mailer.perform_deliveries = true

como por defecto, esto es falso, impidiendo que se envíen correos desde su entorno de desarrollo ...


Para cualquiera que no use smtp, cambiar el método de entrega a sendmail me ayudó además de establecer explícitamente las entregas que se realizarán:

config.action_mailer.delivery_method = :sendmail


Si tiene problemas para enviar correos electrónicos desde la consola, debe llamar al método de entrega en su correo.

MyMailer.create_email.deliver