Подтвердить что ты не робот

ActionMailer не отправляет почту в разработку Rails 4

Почему почтовая программа не отправляет почту? (Или любые идеи для отладки?)

В my_app/config/environment/development.rb У меня есть этот код:

  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  }

Затем на моем локальном компьютере в ~/.bash_profile у меня есть этот код:

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

Когда я запускаю $ env в моем терминале, я вижу, что обе переменные среды правильно установлены.

Я также перезапустил сервер rails.

4b9b3361

Ответ 1

Вы должны добавить

config.action_mailer.perform_deliveries = true

поскольку по умолчанию это значение false, предотвращая отправку писем из среды разработки...

Ответ 2

Для тех, кто не использует smtp, мне удалось добавить способ доставки sendmail в дополнение к явным настройкам доставки:

config.action_mailer.delivery_method = :sendmail

Ответ 3

Если у вас возникли проблемы с отправкой электронной почты с консоли, вы должны вызвать метод доставки в своей почте.

MyMailer.create_email.deliver

Ответ 4

Итак, я понял это. Наличие строки ActionMailer::Base.delivery_method = :smtp в config/environment.rb переопределяет ActionMailer::Base.delivery_method = :test в config/environments/test.rb.

Итак, удалите эту строку, ActionMailer::Base.delivery_method = :smtp из config/environment.rb и поместите ее в config/environments/production.rb. Это позволяет разместить ActionMailer::Base.delivery_method = :test в config/environments/test.rb и версию, которую вы хотите в config/environments/development.rb. Я сделал development.rb :test, когда я заполнил свою базу данных с помощью Faker и изменил ее на :smtp, поэтому я был уверен, что настоящие электронные письма были отправлены в качестве дополнительной проверки.

Примечание. Чтобы эти изменения вступили в силу, необходимо перезагрузить сервер.

Другое примечание: текущие инструкции SendGrid Heroku (https://devcenter.heroku.com/articles/sendgrid) помещают код конфигурации SendGrid Heroku в новый файл config/initializers/mail.rb, который, скорее всего, требуют удаления последней строки и размещения нужной версии в каждом config/environments/[production.rb, development.rb, test.rb]