我在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.
为什么认为我使用的是“沙盒子域”?这是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,因此我知道它正在读取正确的配置文件。并且所有环境变量都已正确设置。发件人的设置也正确,我在日志中看到它(do-not-reply@my-custom-domain.com)我错过了什么?即使处于事件状态,是否仍有可能传播?
谢谢!
最佳答案
因此问题出在当我验证我的自定义域时,它在我的Heroku/Mailgun帐户下创建了第二个域。我的Heroku env vars中仍然有来自xxx.mailgun.org(沙盒)域的凭据。一旦我用自定义域中的凭据替换了它们,一切就正常了。 (自从Heroku设置了第一套环境变量以来,我愚蠢地假设新的环境变量将被自动放入。)
谢谢您的帮助。
关于ruby-on-rails - 验证电子邮件未通过Heroku/Mailgun发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37534567/