2016-05-30 6 views
6

У меня есть приложение Rails на Heroku. У него есть собственный домен, и я попытался настроить отправку электронной почты через Mailgun. Я установил Mailgun в качестве дополнения через Heroku, и я прошел через шаги, которые Mailgun дает для проверки своего пользовательского домена. Если я запустил Mailgun «Check DNS Records Now», все возвращается в зеленый цвет, а статус «Активный». Я даже могу отправлять сообщения из своего пользовательского домена с помощью вызова curl, который они предоставляют. Однако, когда я пытаюсь отправить электронное письмо из моего приложения Rails, используя ActionMailer, я получаю: Net::SMTPFatalError (554 Sandbox subdomains are for test purposes only. Please add your own domain or add the address to authorized recipients in domain settings.Проверенное письмо не отправлено через Heroku/Mailgun

Почему он думает, что я использую «субдомен для песочницы»? Вот что я имею в environments/production.rb:

# Mailgun 
    ActionMailer::Base.smtp_settings = {          
    port: ENV['MAILGUN_SMTP_PORT'],          
    address: ENV['MAILGUN_SMTP_SERVER'],         
    user_name: ENV['MAILGUN_SMTP_LOGIN'], 
    password: ENV['MAILGUN_SMTP_PASSWORD'],        
    domain: 'my-custom-domain.com',            
    authentication: :plain,            
    } 
    ActionMailer::Base.delivery_method = :smtp        
    # Devise recoverable  
    config.action_mailer.default_url_options = { host: 'my-custom-domain.com' } 

Для разработки я использую Gmail, так что я знаю, что это читает правильный конфигурационный файл. И все env vars установлены правильно. Правильно ли это правильно, я вижу это мои журналы ([email protected]) Что я пропустил? Активен ли что-то, что еще может распространяться даже через статус?

Спасибо!

+1

Вы добавили получателей своего сообщения в список «Авторизованные получатели»? – Brian

+0

У меня была одна и та же проблема - я сделал то, что вы упомянули ниже, изменил героев env vars, чтобы указать на новые учетные данные, но почта еще не отправляется. Как ни странно, цепочка «повторного подтверждения подтверждения» работает нормально. Любая идея, как это исправить? – Anand

ответ

9

Таким образом, проблема оказалась в том, что когда я проверил свой пользовательский домен, он создал второй домен в моей учетной записи Heroku/Mailgun. У меня все еще были учетные данные из домена xxx.mailgun.org (песочница) в моем enok vars Heroku. Как только я заменил их учетными данными из моего пользовательского домена, все сработало. (Поскольку Heroku установил первый набор env vars, я по глупости предположил, что новый набор будет автоматически вставлен.) Sigh ...

Спасибо за вашу помощь lyen.

+8

Mailgun/Heroku действительно должен предоставить лучшие инструкции! – user3763682

+0

Можно ли добавить Node.js вместо ruby? – c0d3Junk13

3

Вы добавили получателей вашего сообщения электронной почты в список «Авторизованные получатели» под номером https://mailgun.com/app/domains/sandbox_your_domain.mailgun.org?

enter image description here

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

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

+1

Я хочу использовать Mailgun для отправки производственных сообщений. Я не хочу быть в режиме песочницы. Как мне выйти из этого? Я смог отправить сообщение через завиток без «авторизации» этих получателей. Как мне это сделать? – lostphilosopher

6

Чтобы добавить к lostphilosopher ответ, я недавно решил эту проблему самостоятельно с помощью MailGun.

Вот что работает для меня:

Ситуация: После успешного добавления пользовательского домена в Mailgun, моя почта отправка/прием перестал работать

ошибки: После добавления пользовательского домена и проверки DNS с Mailgun, я получил сообщения об ошибках, таких как:

Net::SMTPFatalError: 554 Sandbox subdomains are for test purposes only. Please add your own domain or add the address to authorized recipients in Account Settings.

Решение: Поймите, что Heroku НЕ автоматически обновляет параметры конфигурации для вас. Вы должны вручную обновить их значениями для вашего нового домена.

  1. В MailGun - Найти новые настройки домена MailGun под под https://mailgun.com/app/domains
  2. В Heroku - GOTO: Heroku> App> Настройки> Reveal Config Vars
  3. В Heroku - ОБНОВЛЕНИЕ следующие конфигурации вары
    • MAILGUN_DOMAIN
    • MAILGUN_SMTP_LOGIN
    • MAILGUN_SMTP_PASSWORD

Update Heroku Config Vars With New MailGun Domain Settings

И да, я согласен - MailGun документы не являются наиболее тщательно. Особенно, когда речь заходит о тестировании вашей установки.

+0

Что входит в mailgun_domain –