【问题标题】:Hartl's Rails tutorial ch 11.4 Email in production: why am I not receiving an email? + Heroku errorHartl 的 Rails 教程 ch 11.4 生产中的电子邮件:为什么我没有收到电子邮件? + Heroku 错误
【发布时间】:2017-11-24 05:40:21
【问题描述】:

第11章的最后练习是:

在生产环境中注册一个新帐户。你收到邮件了吗?

据我所知,它部分有效。当我通过 Heroku 注册已部署的网站时,我收到一条错误消息

很抱歉,出了点问题。

如果您是应用程序所有者,请查看日志以获取更多信息。

我从日志中看到已生成激活电子邮件,但它从未出现在我的电子邮件收件箱中。我不明白为什么。下面是 Heroku 日志,从我使用 exampleemailaddress@gmail.com 创建示例 user2 开始。注意:这不是一个真实的电子邮件地址,但我之前尝试过 2 个真实的。我只是为了这篇文章而使用这个电子邮件和用户。

2017-11-24T05:33:14.342658+00:00 app[web.1]:     <style>
2017-11-24T05:33:14.342659+00:00 app[web.1]:       /* Email styles need to be inline */
2017-11-24T05:33:14.342660+00:00 app[web.1]:     </style>
2017-11-24T05:33:14.342660+00:00 app[web.1]:   </head>
2017-11-24T05:33:14.342661+00:00 app[web.1]: 
2017-11-24T05:33:14.342662+00:00 app[web.1]:   <body>
2017-11-24T05:33:14.342662+00:00 app[web.1]:     <h1>Sample App</h1>
2017-11-24T05:33:14.342663+00:00 app[web.1]: 
2017-11-24T05:33:14.342663+00:00 app[web.1]: <p>Hi owen,</p>
2017-11-24T05:33:14.342664+00:00 app[web.1]: 
2017-11-24T05:33:14.342664+00:00 app[web.1]: <p>
2017-11-24T05:33:14.342665+00:00 app[web.1]: Welcome to the Sample App! Click on the link below to activate your account:
2017-11-24T05:33:14.342666+00:00 app[web.1]: </p>
2017-11-24T05:33:14.342666+00:00 app[web.1]: 
2017-11-24T05:33:14.342668+00:00 app[web.1]:   </body>
2017-11-24T05:33:14.342667+00:00 app[web.1]: <a href="https://still-beyond-10331.herokuapp.com/account_activations/B9E9MkbJBlUEbYTLvf_kZg/edit?email=owenjharrison%40gmail.com">Activate</a>
2017-11-24T05:33:14.342668+00:00 app[web.1]: </html>
2017-11-24T05:33:14.342669+00:00 app[web.1]: 
2017-11-24T05:33:14.342669+00:00 app[web.1]: ----==_mimepart_5a17af1a3f1f2_b2843f306332--
2017-11-24T05:33:14.342670+00:00 app[web.1]: 
2017-11-24T05:33:14.343060+00:00 app[web.1]: I, [2017-11-24T05:33:14.342982 #11]  INFO -- : [a3094dfa-b0f6-45f5-862c-2c7f54404ad8] Completed 500 Internal Server Error in 1644ms (ActiveRecord: 1179.3ms)
2017-11-24T05:33:14.343765+00:00 app[web.1]: F, [2017-11-24T05:33:14.343705 #11] FATAL -- : [a3094dfa-b0f6-45f5-862c-2c7f54404ad8]   
2017-11-24T05:33:14.343837+00:00 app[web.1]: F, [2017-11-24T05:33:14.343771 #11] FATAL -- : [a3094dfa-b0f6-45f5-862c-2c7f54404ad8] Net::SMTPAuthenticationError (535 Authentication failed: account disabled
2017-11-24T05:33:14.343839+00:00 app[web.1]: ):
2017-11-24T05:33:14.343895+00:00 app[web.1]: F, [2017-11-24T05:33:14.343839 #11] FATAL -- : [a3094dfa-b0f6-45f5-862c-2c7f54404ad8]   
2017-11-24T05:33:14.346096+00:00 heroku[router]: at=info method=POST path="/users" host=still-beyond-10331.herokuapp.com request_id=a3094dfa-b0f6-45f5-862c-2c7f54404ad8 fwd="212.174.5.195" dyno=web.1 connect=1ms service=1666ms status=500 bytes=1891 protocol=https
2017-11-24T05:33:14.343959+00:00 app[web.1]: F, [2017-11-24T05:33:14.343909 #11] FATAL -- : [a3094dfa-b0f6-45f5-862c-2c7f54404ad8] app/models/user.rb:64:in `send_activation_email'
2017-11-24T05:33:14.343960+00:00 app[web.1]: [a3094dfa-b0f6-45f5-862c-2c7f54404ad8] app/controllers/users_controller.rb:25:in `create'
2017-11-24T05:36:54.633186+00:00 app[web.1]: I, [2017-11-24T05:36:54.633027 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] Started POST "/users" for 212.174.5.195 at 2017-11-24 05:36:54 +0000
2017-11-24T05:36:54.639890+00:00 app[web.1]: I, [2017-11-24T05:36:54.639786 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] Processing by UsersController#create as HTML
2017-11-24T05:36:54.639987+00:00 app[web.1]: I, [2017-11-24T05:36:54.639917 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   Parameters: {"utf8"=>"✓", "authenticity_token"=>"CQjYjjt1aXFsx4katSkk6obNnD/51iGtETU9pizfRLgcAlZtSITgl15njTWOY89jO72Vp9DiKstg2CmSKHYeYg==", "user"=>{"name"=>"example user2", "email"=>"exaampleemailaddress@gmail.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create my account"}
2017-11-24T05:36:54.787318+00:00 app[web.1]: D, [2017-11-24T05:36:54.787201 #6] DEBUG -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]    (1.2ms)  BEGIN
2017-11-24T05:36:54.797518+00:00 app[web.1]: D, [2017-11-24T05:36:54.797427 #6] DEBUG -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   User Exists (1.7ms)  SELECT  1 AS one FROM "users" WHERE LOWER("users"."email") = LOWER($1) LIMIT $2  [["email", "exaampleemailaddress@gmail.com"], ["LIMIT", 1]]
2017-11-24T05:36:54.872861+00:00 app[web.1]: D, [2017-11-24T05:36:54.872770 #6] DEBUG -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   SQL (1.7ms)  INSERT INTO "users" ("name", "email", "created_at", "updated_at", "password_digest", "activation_digest") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["name", "example user2"], ["email", "exaampleemailaddress@gmail.com"], ["created_at", "2017-11-24 05:36:54.797954"], ["updated_at", "2017-11-24 05:36:54.797954"], ["password_digest", "$2a$10$g6t4XvQPYYhVh3/tzNmd.ONZ9ldayN7KOfHW9cYLyOvEAqBtlLGZq"], ["activation_digest", "$2a$10$c.QMCwpe1zAJruyccsRQcecTF6co02uQ7J5/CLyX6UBCtCq2fnBpO"]]
2017-11-24T05:36:54.875122+00:00 app[web.1]: D, [2017-11-24T05:36:54.875062 #6] DEBUG -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]    (1.8ms)  COMMIT
2017-11-24T05:36:54.881126+00:00 app[web.1]: I, [2017-11-24T05:36:54.881050 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   Rendering user_mailer/account_activation.html.erb within layouts/mailer
2017-11-24T05:36:54.883484+00:00 app[web.1]: I, [2017-11-24T05:36:54.883420 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   Rendered user_mailer/account_activation.html.erb within layouts/mailer (2.2ms)
2017-11-24T05:36:54.884432+00:00 app[web.1]: I, [2017-11-24T05:36:54.884375 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   Rendering user_mailer/account_activation.text.erb within layouts/mailer
2017-11-24T05:36:54.884974+00:00 app[web.1]: I, [2017-11-24T05:36:54.884915 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   Rendered user_mailer/account_activation.text.erb within layouts/mailer (0.4ms)
2017-11-24T05:36:55.036784+00:00 app[web.1]: D, [2017-11-24T05:36:55.036677 #6] DEBUG -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] UserMailer#account_activation: processed outbound mail in 160.5ms
2017-11-24T05:36:55.180112+00:00 heroku[router]: at=info method=POST path="/users" host=still-beyond-10331.herokuapp.com request_id=d4329f23-2e16-485a-aec1-4e24c92b4d5c fwd="212.174.5.195" dyno=web.1 connect=1ms service=558ms status=500 bytes=1891 protocol=https
2017-11-24T05:36:55.176384+00:00 app[web.1]: I, [2017-11-24T05:36:55.176279 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] Sent mail to exaampleemailaddress@gmail.com (139.4ms)
2017-11-24T05:36:55.176430+00:00 app[web.1]: D, [2017-11-24T05:36:55.176370 #6] DEBUG -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] Date: Fri, 24 Nov 2017 05:36:55 +0000
2017-11-24T05:36:55.176431+00:00 app[web.1]: From: noreply@example.com
2017-11-24T05:36:55.176432+00:00 app[web.1]: To: exaampleemailaddress@gmail.com
2017-11-24T05:36:55.176433+00:00 app[web.1]: Message-ID: <5a17aff7a020_62843f6c634b6@7e0cfe46-bf9e-4ef5-bd82-f0d5ef32afd2.mail>
2017-11-24T05:36:55.176433+00:00 app[web.1]: Subject: Account activation
2017-11-24T05:36:55.176433+00:00 app[web.1]: Mime-Version: 1.0
2017-11-24T05:36:55.176434+00:00 app[web.1]: Content-Type: multipart/alternative;
2017-11-24T05:36:55.176435+00:00 app[web.1]:  boundary="--==_mimepart_5a17aff78aa4_62843f6c633d1";
2017-11-24T05:36:55.176435+00:00 app[web.1]:  charset=UTF-8
2017-11-24T05:36:55.176436+00:00 app[web.1]: Content-Transfer-Encoding: 7bit
2017-11-24T05:36:55.176436+00:00 app[web.1]: 
2017-11-24T05:36:55.176437+00:00 app[web.1]: 
2017-11-24T05:36:55.176437+00:00 app[web.1]: ----==_mimepart_5a17aff78aa4_62843f6c633d1
2017-11-24T05:36:55.176438+00:00 app[web.1]: Content-Type: text/plain;
2017-11-24T05:36:55.176438+00:00 app[web.1]:  charset=UTF-8
2017-11-24T05:36:55.176438+00:00 app[web.1]: Content-Transfer-Encoding: 7bit
2017-11-24T05:36:55.176439+00:00 app[web.1]: 
2017-11-24T05:36:55.176439+00:00 app[web.1]: Hi example user2,
2017-11-24T05:36:55.176440+00:00 app[web.1]: 
2017-11-24T05:36:55.176440+00:00 app[web.1]: Welcome to the Sample App! Click on the link below to activate your account:
2017-11-24T05:36:55.176441+00:00 app[web.1]: 
2017-11-24T05:36:55.176441+00:00 app[web.1]: 
2017-11-24T05:36:55.176441+00:00 app[web.1]: https://still-beyond-10331.herokuapp.com/account_activations/wNgvDOzoPpFYMMD-D_lFFg/edit?email=exaampleemailaddress%40gmail.com
2017-11-24T05:36:55.176442+00:00 app[web.1]: ----==_mimepart_5a17aff78aa4_62843f6c633d1
2017-11-24T05:36:55.176442+00:00 app[web.1]: Content-Type: text/html;
2017-11-24T05:36:55.176443+00:00 app[web.1]:  charset=UTF-8
2017-11-24T05:36:55.176443+00:00 app[web.1]: Content-Transfer-Encoding: 7bit
2017-11-24T05:36:55.176443+00:00 app[web.1]: 
2017-11-24T05:36:55.176444+00:00 app[web.1]: <!DOCTYPE html>
2017-11-24T05:36:55.176444+00:00 app[web.1]: <html>
2017-11-24T05:36:55.176444+00:00 app[web.1]:   <head>
2017-11-24T05:36:55.176445+00:00 app[web.1]:     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2017-11-24T05:36:55.176445+00:00 app[web.1]:     <style>
2017-11-24T05:36:55.176446+00:00 app[web.1]:       /* Email styles need to be inline */
2017-11-24T05:36:55.176446+00:00 app[web.1]:     </style>
2017-11-24T05:36:55.176446+00:00 app[web.1]:   </head>
2017-11-24T05:36:55.176447+00:00 app[web.1]: 
2017-11-24T05:36:55.176447+00:00 app[web.1]:   <body>
2017-11-24T05:36:55.176447+00:00 app[web.1]:     <h1>Sample App</h1>
2017-11-24T05:36:55.176448+00:00 app[web.1]: 
2017-11-24T05:36:55.176448+00:00 app[web.1]: <p>Hi example user2,</p>
2017-11-24T05:36:55.176449+00:00 app[web.1]: Welcome to the Sample App! Click on the link below to activate your account:
2017-11-24T05:36:55.176449+00:00 app[web.1]: <p>
2017-11-24T05:36:55.176450+00:00 app[web.1]: 
2017-11-24T05:36:55.176448+00:00 app[web.1]: 
2017-11-24T05:36:55.176450+00:00 app[web.1]: </p>
2017-11-24T05:36:55.176451+00:00 app[web.1]: <a href="https://still-beyond-10331.herokuapp.com/account_activations/wNgvDOzoPpFYMMD-D_lFFg/edit?email=exaampleemailaddress%40gmail.com">Activate</a>
2017-11-24T05:36:55.176452+00:00 app[web.1]:   </body>
2017-11-24T05:36:55.176452+00:00 app[web.1]: </html>
2017-11-24T05:36:55.176452+00:00 app[web.1]: 
2017-11-24T05:36:55.176453+00:00 app[web.1]: ----==_mimepart_5a17aff78aa4_62843f6c633d1--
2017-11-24T05:36:55.176780+00:00 app[web.1]: I, [2017-11-24T05:36:55.176724 #6]  INFO -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] Completed 500 Internal Server Error in 537ms (ActiveRecord: 31.0ms)
2017-11-24T05:36:55.176453+00:00 app[web.1]: 
2017-11-24T05:36:55.177316+00:00 app[web.1]: F, [2017-11-24T05:36:55.177264 #6] FATAL -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   
2017-11-24T05:36:55.177363+00:00 app[web.1]: F, [2017-11-24T05:36:55.177320 #6] FATAL -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] Net::SMTPAuthenticationError (535 Authentication failed: account disabled
2017-11-24T05:36:55.177364+00:00 app[web.1]: ):
2017-11-24T05:36:55.177407+00:00 app[web.1]: F, [2017-11-24T05:36:55.177365 #6] FATAL -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c]   
2017-11-24T05:36:55.177466+00:00 app[web.1]: F, [2017-11-24T05:36:55.177425 #6] FATAL -- : [d4329f23-2e16-485a-aec1-4e24c92b4d5c] app/models/user.rb:64:in `send_activation_email'
2017-11-24T05:36:55.177466+00:00 app[web.1]: [d4329f23-2e16-485a-aec1-4e24c92b4d5c] app/controllers/users_controller.rb:25:in `create'

编辑:下面添加了 SMTP 设置

config.action_mailer.perform_caching = false

  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'https://still-beyond-10331.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
  }

【问题讨论】:

  • 我尝试使用我的电子邮件在您的应用上注册,但失败了。您是否正确配置了 SMTP 服务器设置? railstutorial.org/book/…
  • 它在本地工作吗?
  • 我只是按照教程中的步骤进行操作。这就是为什么我不明白为什么它不起作用。 sendgrid可能有问题吗? @Vishal 它在开发模式下工作,但实际上并没有发送电子邮件,这是预期的行为。据我了解,在生产中,一封电子邮件应该会到达我的收件箱,但不是。
  • 在开发中,电子邮件也应该到达您的收件箱。您在开发中的收件箱中收到邮件了吗?
  • 没有。但教程特别指出电子邮件不会在开发中到达,但生成的文本将在应用程序日志中可见。

标签: ruby-on-rails heroku railstutorial.org


【解决方案1】:

将 Smtp 设置添加到 config/environments/production.rb:

  config.action_mailer.default_url_options = { host: 'still-beyond-10331.herokuapp.com' }

  config.action_mailer.delivery_method = :smtp

  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => "gmail.com",
      :user_name => "xxxxx@gmail.com",
      :password => "xxxxxx",
      :authentication => "plain",
      :enable_starttls_auto => true
  }

【讨论】:

  • 但这些设置与教程中的设置相矛盾。教程中的那些应该可以正常工作。
  • 你的 smtp 设置是什么?
  • @Owen 你在heroku 上添加了ENV['SENDGRID_USERNAME']ENV['SENDGRID_PASSWORD'] 吗?
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2018-01-05
  • 1970-01-01
  • 2013-04-26
相关资源
最近更新 更多