已验证的电子邮件未通过Heroku/Mailgun发送

los*_*her 9 email ruby-on-rails heroku mailgun

我在Heroku上有Rails应用程序.它有一个自定义域,我试图通过Mailgun设置电子邮件发送.我已经通过Heroku安装了Mailgun作为插件,我已经完成了Mailgun给出的"验证"我的自定义域的步骤.如果我运行Mailgun的"立即检查DNS记录",一切都会变回绿色,状态为"活动".我甚至可以通过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.

为什么它认为我使用的是"Sandbox子域"?这就是我所拥有的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' } 
Run Code Online (Sandbox Code Playgroud)

对于开发我正在使用Gmail,所以我知道它正在阅读正确的配置文件.并且所有env变量都设置正确.from也正确设置,我看到它是我的日志(do-not-reply@my-custom-domain.com)我错过了什么?即使状态是活跃的,还有什么东西可以传播吗?

谢谢!

los*_*her 11

所以问题是,当我验证我的自定义域时,它在我的Heroku/Mailgun帐户下创建了第二个域.我仍然拥有Heroku env vars中xxx.mailgun.org(沙盒)域的凭据.一旦我用我的自定义域中的凭据替换它们一切正常.(由于Heroku设置了第一套env vars,我愚蠢地认为新的设置会自动投入使用.)叹气......

谢谢你的帮助.

  • Mailgun/Heroku真的应该提供更好的指示! (9认同)

cki*_*b16 7

为了添加丢失的哲学家答案,我最近自己解决了这个MailGun自定义域名问题.

这对我有用:

情况:成功将自定义域添加到Mailgun后,我的邮件发送/接收停止工作

错误:添加自定义域并使用Mailgun验证DNS后,我收到了错误消息,例如:

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中 - 在https://mailgun.com/app/domains下找到您的新MailGun域名设置
  2. 在Heroku中 - goto:Heroku> App> Settings> Reveal Config Vars
  3. 在Heroku中 - 更新以下配置变量
    • MAILGUN_DOMAIN
    • MAILGUN_SMTP_LOGIN
    • MAILGUN_SMTP_PASSWORD

使用新的MailGun域设置更新Heroku配置变量

是的,我同意 - MailGun文档不是最彻底的.特别是在测试您的设置时.