【问题标题】:Verified email not sending through Heroku/Mailgun未通过 Heroku/Mailgun 发送的已验证电子邮件
【发布时间】:2016-09-28 19:25:00
【问题描述】:

我在 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 env vars 更改为指向新凭据,但仍然没有发送邮件。奇怪的是,“重新发送确认指令”链工作正常。知道如何解决这个问题吗?

标签: ruby-on-rails email heroku mailgun


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

【讨论】:

    【解决方案2】:

    要添加到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 域设置
    2. 在 Heroku 中 - 转到:Heroku > 应用程序 > 设置 > 显示配置变量
    3. 在 Heroku 中 - 更新以下配置变量
      • MAILGUN_DOMAIN
      • MAILGUN_SMTP_LOGIN
      • MAILGUN_SMTP_PASSWORD

    是的,我同意 - MailGun 文档并不是最详尽的。尤其是在测试您的设置时。

    【讨论】:

    • mailgun_domain 中的内容
    【解决方案3】:

    所以问题是当我验证我的自定义域时,它在我的 Heroku/Mailgun 帐户下创建了第二个域。我的 Heroku 环境变量中仍然有来自 xxx.mailgun.org(沙盒)域的凭据。一旦我用我的自定义域中的凭据替换它们,一切都会正常工作。 (由于 Heroku 设置了第一组环境变量,我愚蠢地假设新的设置会自动放入。)叹息...

    感谢您的帮助。

    【讨论】:

    • Mailgun / Heroku 真的应该提供更好的说明!
    • 这个可以用 Node.js 代替 ruby​​ 添加吗?
    • 不幸的是,即使在(重新)为已验证的自定义域设置环境变量之后,它仍然无法在我的 heroku 上工作......它在开发模式下工作得很好(当我从本地主机运行时只有 MAILGUN_API_KEYMAILGUN_DOMAIN 它发送电子邮件)。我也检查了授权收件人是否为空,所有“域验证和 DNS”复选框都是绿色的。有什么其他设置可能出错的想法吗?
    【解决方案4】:

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

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

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

    【讨论】:

    • 我想使用 Mailgun 发送生产消息。我不想处于沙盒模式。我该如何摆脱它?我能够通过 curl 发送消息而无需“授权”这些收件人。我该怎么做?
    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多