我在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)我错过了什么?即使状态是活跃的,还有什么东西可以传播吗?
谢谢!
答案 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不会自动为您更新配置变量。您必须使用新域的值手动更新它们。
是的,我同意 - MailGun文档并不是最全面的。特别是在测试您的设置时。
答案 2 :(得分:4)
您是否已将电子邮件的收件人添加到"授权收件人" https://mailgun.com/app/domains/sandbox_your_domain.mailgun.org
下的列表?
请务必添加可以接收电子邮件的真实电子邮件地址。
这是因为 mailgun 会发送一封确认电子邮件,询问该电子邮件地址的所有者是否确实希望收到来自 mailgun 的电子邮件。
答案 3 :(得分:0)
MAILGUN_API_KEY
,MAILGUN_DOMAIN
,MAILGUN_SMTP_PASSWORD
,MAILGUN_SMTP_LOGIN
,MAILGUN_SMTP_SERVER
,MAILGUN_SMTP_PORT
具有适当的值。