已validation的电子邮件不通过Heroku / Mailgun发送
我在Heroku上有Rails应用程序。 它有一个自定义域,我试图通过Mailgun设置电子邮件发送。 我已经通过Heroku安装了Mailgun作为插件,我已经完成了Mailgun给出的“validation”我的自定义域的步骤。 如果我运行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)我错过了什么? 即使状态是活跃的,还有什么东西可以传播吗?
谢谢!
所以问题是,当我validation我的自定义域时,它在我的Heroku / Mailgun帐户下创建了第二个域。 我仍然拥有Heroku env vars中xxx.mailgun.org(沙盒)域的凭据。 一旦我用我的自定义域中的凭据替换它们一切正常。 (由于Heroku设置了第一套env vars,我愚蠢地认为新套装会自动投入使用。)叹气……
谢谢你的帮助。
为了添加丢失的哲学家答案,我最近自己解决了这个MailGun自定义域名问题。
这对我有用:
情况 :成功将自定义域添加到Mailgun后,我的邮件发送/接收停止工作
错误 :添加自定义域并使用MailgunvalidationDNS后,我收到了错误消息,例如:
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不会自动为您更新配置变量。 您必须使用新域的值手动更新它们。
- 在MailGun中 – 在https://mailgun.com/app/domains下找到您的新MailGun域名设置
- 在Heroku中 – goto:Heroku> App> Settings> Reveal Config Vars
- 在Heroku中 – 更新以下配置变量
- MAILGUN_DOMAIN
- MAILGUN_SMTP_LOGIN
- MAILGUN_SMTP_PASSWORD
是的,我同意 – MailGun文档并不是最全面的。 特别是在测试您的设置时。
您是否已将电子邮件的收件人添加到https://mailgun.com/app/domains/sandbox_your_domain.mailgun.org
下的“授权收件人”列表中?
请务必添加可以接收电子邮件的真实电子邮件地址。
这是因为mailgun会发送一封确认电子邮件,询问该电子邮件地址的所有者是否真的希望收到来自mailgun的电子邮件。
- 确保您已经validation了域集(mailgun – >域名 – >已validation的域名和DNS – 全部为绿色)。
- 确保您更新了Heroku中的env变量以使用经过validation的域(heroku – > settings – > reveal config vars)应该包含字段:
MAILGUN_API_KEY
,MAILGUN_DOMAIN
,MAILGUN_SMTP_PASSWORD
,MAILGUN_SMTP_LOGIN
,MAILGUN_SMTP_SERVER
,MAILGUN_SMTP_PORT
以及正确的值。 - 确保您已清除授权收件人列表(mailgun – >域名 – >授权收件人) – 这样每个人都可以收到您的电子邮件。
- 确保您已清除IP白名单列表(mailgun – >帐户概述 – >帐户设置 – >安全 – > IP白名单)或包含您的heroku应用程序的IP。 在我的情况下,唯一的IP是我的localhost ip(用于开发),它阻止了heroku部署的应用程序发送电子邮件。