我在Heroku上有Rails应用程序。它有一个自定义域,我试着设置通过Mailgun发送电子邮件。我已经通过Heroku安装了Mailgun作为附加组件,并且我已经完成了Mailgun提供的“验证”我的自定义域的步骤。如果我运行Mailgun的“立即检查DNS记录”,所有内容都返回绿色,状态为“活动”。然而,当我尝试使用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.
为什么它认为我在使用“沙盒子域”?以下是我在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变量都设置正确。从正确设置以及,我看到它我的日志(email protected(https://stackoverflow.com/cdn-cgi/l/email-protection))我错过了什么?有没有什么东西即使在状态处于活动状态时仍然可以传播?
谢谢你,谢谢
5条答案
按热度按时间dwthyt8l1#
所以问题是,当我验证我的自定义域时,它在我的Heroku/Mailgun帐户下创建了第二个域。我仍然有来自xxx.mailgun.org(沙盒)域的凭据在我的Heroku env vars中。一旦我用我的自定义域的凭据替换它们,一切都正常。(因为Heroku设置了第一组env变量,我愚蠢地认为新的一组会自动放进去。)唉.
谢谢你的帮助,莱恩。
aydmsdu92#
为了补充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下查找您的新MailGun域设置
1.在Heroku -后藤中:Heroku >应用程序>设置>显示配置变量
是的,我同意- MailGun文档不是最彻底的。特别是在测试你的设置时。
jgovgodb3#
您是否将电子邮件的收件人添加到
https://mailgun.com/app/domains/sandbox_your_domain.mailgun.org
下的“授权收件人”列表中?请务必添加一个可以接收电子邮件的真实的电子邮件地址。
这是因为 mailgun 会发送一封确认电子邮件,询问电子邮件地址的所有者是否真的希望从 mailgun 接收电子邮件。
ljo96ir54#
1.确保你已经验证了域设置(mailgun -> domains -> verified domains & dns - all绿色)。
1.确保您更新了Heroku中的env变量,以便与已验证的域一起使用(heroku ->设置->显示配置变量)应该具有字段:
MAILGUN_API_KEY
、MAILGUN_DOMAIN
、MAILGUN_SMTP_PASSWORD
、MAILGUN_SMTP_LOGIN
、MAILGUN_SMTP_SERVER
、MAILGUN_SMTP_PORT
的值。1.确保您已清除授权收件人列表(mailgun -> domains -> authorized recipients)-这样每个人都可以收到您的电子邮件。
1.请确保您已清除IP白名单列表(mailgun ->帐户概述->帐户设置->安全性-> IP白名单)或包含heroku应用的IP。在我的情况下,唯一的IP是我的localhost IP(用于开发),它阻止了heroku部署的发送电子邮件的应用程序。
kjthegm65#
更新对不起,但下面的说明显示了如何使用sendgrid发送邮件,但仍然在沙箱模式下。如果我知道如何退出沙盒模式,我将更新这些步骤。
我不得不等了10分钟,然后它就随机开始工作了(沙箱错误消失了)--我不需要在heroku中更改配置变量,也不需要登录sendgrid网站。
以下是从开始到结束要做的一切:
4步安装mailgun heroku插件
第一步
运行
heroku addons:create mailgun:starter
(根据heroku mailgun docs)第二步
将这些URL添加到
production.rb
(将https://www.example.com
替换为您的真实的网站URL,将yourapp
替换为您的heroku应用程序URL -使用heroku info
查找):第三步
在浏览器中,转到您的heroku Jmeter 板,选择您的应用程序->资源-> Mailgun(我不确定这一步是否必要,但我这样做了,所以我在这里包含它-也许有人可以确认它是否必要)
第四步
等待大约10-20分钟。1
1我犹豫了10分钟左右,然后开始工作,除了等待,我什么也没做:
奖励
这里有一个非常简单的方法来测试rails控制台的邮件。转到Rails控制台,
然后将其放入控制台(替换from和to字段):