Heroku设置SendGrid麻烦

时间:2017-11-18 05:02:03

标签: ruby-on-rails heroku sendgrid cloud9

我长期以来一直在为faaarrrrr遇到麻烦。我已经看过几乎与我类似的无数问题,似乎无法使它们中的任何一个起作用。

我一直在使用cloud9 ide并推送到heroku尝试使用SendGrid发送简单的电子邮件。我很确定问题出在production.rb的设置中,或者我用SendGrid设置heroku的方式,但我只是在我的智慧结束。

config.action_mailer.default_url_options = { :host => 'http://tranquil-plateau-41839.herokuapp.com' }

我已将此文件放在环境文件夹中的production.rb文件中。

UserMailer.welcome_email(@user).deliver_now

这位于我的user.rb文件中,如果用户保存,则会执行if语句。我已经尝试了一百万种不同的组合来实现这一点并且它似乎并不想要。

这是我从heroku -logs

获得的
2017-11-18T04:40:06.396183+00:00 app[web.1]:    (2.1ms)  COMMIT
2017-11-18T04:40:06.396635+00:00 app[web.1]: Completed 302 Found in 140ms (ActiveRecord: 37.3ms)
2017-11-18T04:40:06.396468+00:00 app[web.1]: Redirected to http://tranquil-plateau-41839.herokuapp.com/login
2017-11-18T04:40:06.459084+00:00 app[web.1]: Started GET "/login" for 173.28.213.164 at 2017-11-18 04:40:06 +0000
2017-11-18T04:40:06.460969+00:00 app[web.1]: Processing by SessionsController#new as HTML
2017-11-18T04:40:06.462953+00:00 app[web.1]:   Rendered sessions/new.html.haml within layouts/application (1.1ms)
2017-11-18T04:40:06.464328+00:00 app[web.1]: Completed 200 OK in 3ms (Views: 2.7ms | ActiveRecord: 0.0ms)
2017-11-18T04:40:06.465391+00:00 heroku[router]: at=info method=GET path="/login" host=tranquil-plateau-41839.herokuapp.com request_id=e079f0c1-4408-4c29-b4a0-0707004e02fc fwd="173.28.213.164" dyno=web.1 connect=0ms service=10ms status=200 bytes=2823 protocol=http
2017-11-18T04:40:06.397638+00:00 heroku[router]: at=info method=POST path="/users" host=tranquil-plateau-41839.herokuapp.com request_id=f851ddf6-d55a-43b9-9631-a17e98fa47a4 fwd="173.28.213.164" dyno=web.1 connect=0ms service=147ms status=302 bytes=1064 protocol=http

它似乎没有给出错误,当我查看我的SendGrid网站时,它甚至没有任何活动,甚至没有请求或反弹。所以我认为我的配置有问题。

任何帮助都会非常感激我会失去理智。

******更新了*******

现在是我的production.rb文件

config.action_mailer.default_url_options = { host: "http://tranquil-plateau-
    41839.herokuapp.com" }
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.force_ssl = true
  config.action_mailer.smtp_settings = {
    :address => 'smtp.sendgrid.net',
    :port => 587,
    :domain => 'heroku.com',
    :user_name => 'app***@heroku.com',
    :password => 'secret',
    :authentication => :plain,
    :enable_starttls_auto => true
  }

这是我的development.rb文件

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { host:'localhost', port: '3000'}
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default :charset => "utf-8"
config.action_mailer.smtp_settings = {
    :address => "smtp.sendgrid.net",
    :port => 2525,
    :domain => 'localhost:3000',
    :user_name => 'app****@heroku.com',
    :password => 'secret',
    :authentication => :plain,
    :enable_starttls_auto => true
}

我强烈认为这是我的域名或端口,这是生产中的问题。但是,在开发过程中,电子邮件会成功通过。我已经尝试了一百万种不同的变化,而我似乎无法弄明白。

1 个答案:

答案 0 :(得分:0)

我实际上是自己想出来的。问题是Heroku不喜欢被推枝,所以它一直都是正确的。

我最终必须与主人合并并将主人推送到heroku以使其工作。

有很多方法可以将分支机构推送到heroku但是,即使指定我想要推送和运行分支,也无法让它工作。

我希望将来节省一些时间。