ActionMailer no envía correo en desarrollo Rails 4
¿Por qué este correo no envía ningún correo? (O alguna idea para la depuración?)
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 equipo local en ~/.bash_profile tengo este código:
export GMAIL_USERNAME='blah@my_app.com'
export GMAIL_PASSWORD='***'
Cuando corro $ env
en mi terminal, veo que ambas variables de entorno están correctamente configuradas.
También he reiniciado mi servidor rails.
4 answers
Debe agregar
config.action_mailer.perform_deliveries = true
Como de forma predeterminada, esto es falso, evitando que se envíen correos desde su entorno de desarrollo...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 15:32:11
Para cualquiera que no use smtp, cambiar el método de entrega a sendmail me ayudó además de establecer explícitamente las entregas a realizar:
config.action_mailer.delivery_method = :sendmail
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-25 18:41:19
Si tiene problemas para enviar correo electrónico desde la consola, debe llamar al método de entrega en su correo.
MyMailer.create_email.deliver
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-14 21:39:20
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
.
Entonces, borra esa línea, ActionMailer::Base.delivery_method = :smtp
de config/environment.rb
y colócala 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
. Yo hice development.rb
:test
como llené mi base de datos usando Faker y la cambié a :smtp
, así que estaba seguro de que los correos electrónicos reales se enviaban como una comprobación adicional.
Nota: Debe reiniciar su servidor para que estos cambios surtan efecto.
Otra nota: Las instrucciones actuales de SendGrid de Heroku ( https://devcenter.heroku.com/articles/sendgrid ) coloque el código de configuración de SendGrid Heroku en un nuevo archivo config/initializers/mail.rb
que probablemente requerirá eliminar su última línea y colocar la versión deseada en cada config/environments/[production.rb, development.rb, test.rb]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-14 14:20:00