Mailgun Sandbox域无效

时间:2016-08-02 17:57:52

标签: ruby-on-rails heroku mailgun

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.

我在RoR应用程序中使用带有Heroku的Mailgun插件。我正在尝试使用沙箱域,并将我的个人Gmail帐户添加为授权用户。我正在使用设计确认,因此当新用户注册时,应将默认电子邮件发送到他们提供的电子邮件。如下所示,成功创建用户并找到要发送的电子邮件。 Mailgun似乎收到了必要的信息,但不相信我的授权?

Sandbox is active

    SQL (1.1ms)  INSERT INTO "users" ("first_name", "last_name", "email", "encrypted_password", "created_at", "updated_at", "confirmation_token", "confirmation_sent_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id"  [["first_name", "C"], ["last_name", "C"], ["email", "ceo@c.com"], ["encrypted_password", "$2a$10$k9CdjjFd7GzLcKJ.E4VNie27aJrQm3LnigLHlFSFKcd2qR2x11cQW"], ["created_at", "2016-08-01 22:05:30.331566"], ["updated_at", "2016-08-01 22:05:30.331566"], ["confirmation_token", "38f6d620e0e8277957ee85bbede77610cdbea448a79b9d07fc5998fdc3c780d3"], ["confirmation_sent_at", "2016-08-01 22:05:30.565564"]]
2016-08-01T22:05:30.601828+00:00 app[web.1]:   Rendered vendor/bundle/ruby/2.2.0/gems/devise-3.4.1/app/views/devise/mailer/confirmation_instructions.html.erb (9.0ms)
2016-08-01T22:05:30.856455+00:00 app[web.1]: 2016-08-01T22:05:30.856470+00:00 app[web.1]: MyMailer#confirmation_instructions: processed outbound mail in 284.9ms
2016-08-01T22:05:30.978021+00:00 app[web.1]: 
2016-08-01T22:05:30.978023+00:00 app[web.1]: Sent mail to ceo@c.com (121.4ms)
2016-08-01T22:05:30.978026+00:00 app[web.1]: Date: Mon, 01 Aug 2016 22:05:30 +0000
2016-08-01T22:05:30.978027+00:00 app[web.1]: From: personalemail@gmail.com
2016-08-01T22:05:30.978028+00:00 app[web.1]: To: ceo@c.com
2016-08-01T22:05:30.978028+00:00 app[web.1]: Message-ID: <579fc7aad20f8_33f9a82512758405f4@e15a6ab3-869e-4811-9cde-20f13e3e0db4.mail>
2016-08-01T22:05:30.978029+00:00 app[web.1]: Subject: Confirmation instructions
2016-08-01T22:05:30.978029+00:00 app[web.1]: Mime-Version: 1.0
2016-08-01T22:05:30.978030+00:00 app[web.1]: Content-Type: text/html;
2016-08-01T22:05:30.978030+00:00 app[web.1]:  charset=UTF-8
2016-08-01T22:05:30.978030+00:00 app[web.1]: Content-Transfer-Encoding: 7bit
2016-08-01T22:05:30.978031+00:00 app[web.1]: 
2016-08-01T22:05:30.978031+00:00 app[web.1]: <p>Welcome ceo@c.com!</p>
2016-08-01T22:05:30.978032+00:00 app[web.1]: 
2016-08-01T22:05:30.978034+00:00 app[web.1]: <p>You can confirm your account email through the link below:</p>
2016-08-01T22:05:30.978034+00:00 app[web.1]: 
2016-08-01T22:05:30.978035+00:00 app[web.1]: <p><a href="http://peeraccomplish.heroku.com/users/confirmation?confirmation_token=zry54mp6sBgdFdfcjPYP">Confirm my account</a></p>
2016-08-01T22:05:30.978036+00:00 app[web.1]: 
2016-08-01T22:05:30.979055+00:00 app[web.1]:    (0.9ms)  ROLLBACK
2016-08-01T22:05:30.981993+00:00 app[web.1]: Completed 500 Internal Server Error in 753ms
2016-08-01T22:05:30.983041+00:00 app[web.1]: 
2016-08-01T22:05:30.983042+00:00 app[web.1]: ):
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.

我使用directions on using Mailgun for Heroku - (复制并粘贴到我的config / production.rb中):

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         => ENV['MAILGUN_DOMAIN'],
    :authentication => :plain,
  }
  ActionMailer::Base.delivery_method = :smtp

我检查了环境变量,它们看起来都很准确。我还检查端口587正在使用heroku上的telnet工作。

任何想法从哪里开始?

mailers / my_mailer.rb供参考:

class MyMailer < Devise::Mailer   
  helper :application # gives access to all helpers defined within `application_helper`.
  include Devise::Controllers::UrlHelpers # Optional. eg. `confirmation_url`
  default template_path: 'devise/mailer' # to make sure that your mailer uses the devise views

  default from: 'personalemail@gmail.com'
end

3 个答案:

答案 0 :(得分:8)

我也有这个问题。问题是,在使用mailgun沙箱域时,您必须预先注册收件人电子邮件才能向其发送电子邮件。要执行此操作,请转到您的应用程序mailgun仪表板,单击“授权收件人”,如下图所示。

Where to go to add an authorized recipient

答案 1 :(得分:2)

我认为这是Mailgun结束时的一个问题。我确认我有一个与Sandbox域相关联的授权用户。由于Sandbox域名没有运气,我注册了一个域名,并在Heroku应用程序设置中更新了配置变量,并且没有更改上面的代码,发送了电子邮件。

答案 2 :(得分:1)

另一种可能性是,如果您输入了自定义域,则帐户中有两个域。在这种情况下,在heroku上更改自定义域的配置变量。