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

时间:2016-05-30 22:57:22

标签: ruby-on-rails email heroku mailgun

我在Heroku上有Rails应用程序。它有一个自定义域,我试图通过Mailgun设置电子邮件发送。我已经通过Heroku安装了Mailgun作为插件,我已经完成了Mailgun给出的“验证”我的自定义域的步骤。如果我运行Mailgun的“立即检查DNS记录”,一切都会变回绿色,状态为“活动”。我甚至可以通过他们提供的curl来自我的自定义域发送邮件。但是,当我尝试使用ActionMailer从我的Rails应用发送电子邮件时,我得到: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' } 

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

谢谢!

4 个答案:

答案 0 :(得分:11)

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

感谢您的帮助。

答案 1 :(得分:7)

要添加到lostphilosopher答案,我最近自己解决了这个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
  2. 下找到新的MailGun域名设置
  3. 在Heroku中 - goto:Heroku>应用>设置>显示配置变量
  4. 在Heroku中 - 更新以下配置变量
    • MAILGUN_DOMAIN
    • MAILGUN_SMTP_LOGIN
    • MAILGUN_SMTP_PASSWORD
  5. Update Heroku Config Vars With New MailGun Domain Settings

    是的,我同意 - MailGun文档并不是最全面的。特别是在测试您的设置时。

答案 2 :(得分:4)

您是否已将电子邮件的收件人添加到"授权收件人" https://mailgun.com/app/domains/sandbox_your_domain.mailgun.org下的列表?

enter image description here

请务必添加可以接收电子邮件的真实电子邮件地址。

这是因为 mailgun 会发送一封确认电子邮件,询问该电子邮件地址的所有者是否确实希望收到来自 mailgun 的电子邮件。

答案 3 :(得分:0)

  1. 确保您已验证域名集(mailgun - >域名 - >已验证的域名& dns - 全部为绿色)。
  2. 确保您更新Heroku中的env变量以使用经过验证的域(heroku - > settings - >显示配置变量)应包含字段:MAILGUN_API_KEYMAILGUN_DOMAINMAILGUN_SMTP_PASSWORDMAILGUN_SMTP_LOGINMAILGUN_SMTP_SERVERMAILGUN_SMTP_PORT具有适当的值。
  3. 确保您已清除授权收件人列表(mailgun - >域名 - >授权收件人) - 这样每个人都可以收到您的电子邮件。
  4. 确保您已清除IP白名单列表(mailgun - >帐户概述 - >帐户设置 - >安全性 - > IP白名单)或包含您的heroku应用程序的IP。 在我的情况下,唯一的IP是我的localhost ip(用于开发),它阻止了heroku部署的应用程序发送电子邮件。