Ruby on rails 3 设备未发送重置密码电子邮件

Ruby on rails 3 设备未发送重置密码电子邮件,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,Rails 3.2.13,Ruby 1.9.3 我的Desive控制器在发送电子邮件时工作正常,但有一个例外:发送重置密码指示电子邮件 当我点击“忘记密码”链接时,我会收到以下信息: You will receive an email with your password reset instructions in a few minutes. 但是,我没有收到电子邮件。以下是日志文件中的相关转储: Started GET "/password/new.user" for 174.xx.xxx

Rails 3.2.13,Ruby 1.9.3

我的Desive控制器在发送电子邮件时工作正常,但有一个例外:发送重置密码指示电子邮件

当我点击“忘记密码”链接时,我会收到以下信息:

You will receive an email with your password reset instructions in a few minutes.
但是,我没有收到电子邮件。以下是日志文件中的相关转储:

Started GET "/password/new.user" for 174.xx.xxx.xx at 2013-04-29 01:28:48 +0000
Processing by Devise::PasswordsController#new as 
  BlogPost Load (0.5ms)  SELECT `blog_posts`.* FROM `blog_posts` 
  Rendered devise/_links.erb (1.0ms)
  Rendered devise/passwords/new.html.erb within layouts/application (23.1ms)
  Rendered layouts/_shim.html.erb (0.0ms)
  Rendered layouts/_header.html.erb (2.5ms)
  Rendered layouts/_promo_bar.html.erb (0.9ms)
  Rendered layouts/_footer.html.erb (2.6ms)
Completed 200 OK in 54ms (Views: 51.2ms | ActiveRecord: 0.5ms)
Started POST "/password" for 174.xx.xxx.xx at 2013-04-29 01:30:19 +0000
Processing by Devise::PasswordsController#create as HTML
  Parameters: {"utf8"=>"✓", "user"=>{"email"=>"emailaddress@outlook.com"}, "commit"=>"Send me reset password instructions"}
  BlogPost Load (137.8ms)  SELECT `blog_posts`.* FROM `blog_posts` 
  User Load (82.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`email` = 'emailaddress@outlook.com' LIMIT 1
  User Load (14.8ms)  SELECT `users`.* FROM `users` WHERE `users`.`reset_password_token` = 'NysDaribCpgNySc5Nmog' LIMIT 1
   (0.2ms)  BEGIN
   (99.0ms)  UPDATE `users` SET `reset_password_token` = 'NysDaribCpgNySc5Nmog', `reset_password_sent_at` = '2013-04-29 01:30:19', `updated_at` = '2013-04-29 01:30:19' WHERE `users`.`id` = 113
   (60.6ms)  COMMIT
  Rendered devise/mailer/reset_password_instructions.html.erb (1.3ms)
  Rendered devise/mailer/reset_password_instructions.text.erb (1.5ms)

Sent mail to emailaddress@outlook.com (133ms)
Date: Mon, 29 Apr 2013 01:30:21 +0000
To: emailaddress@outlook.com
Message-ID: <517dcd2db584b_71bc6778701193@testsite-test.mail>
Subject: testsite Account Reset password instructions
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_517dcd2d93927_71bc677870116dc";
 charset=UTF-8
Content-Transfer-Encoding: 7bit



----==_mimepart_517dcd2d93927_71bc677870116dc
Date: Mon, 29 Apr 2013 01:30:21 +0000
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <517dcd2d9bfb9_71bc677870117a2@testsite-test.mail>

Hello emailaddress@outlook.com!

A Request to change the password for this account has been received. If this is you, and you still want to change the password, you can do so by clicking on the link below.

<a href="http://test.testsitethefuture.com/password/edit?reset_password_token=NysDaribCpgNySc5Nmog">Change my password</a>

If you didn&#x27;t request this, please ignore this email.


----==_mimepart_517dcd2d93927_71bc677870116dc
Date: Mon, 29 Apr 2013 01:30:21 +0000
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <517dcd2db365a_71bc677870118da@testsite-test.mail>

<p>Hello emailaddress@outlook.com!</p>

<p>A Request to change the password for this account has been received. If this is you, and you still want to change the password, you can do so by clicking on the link below.</p>

<p><a href="http://test.testsitethefuture.com/password/edit?reset_password_token=NysDaribCpgNySc5Nmog">Change my password</a></p>

<p>If you didn&#x27;t request this, please ignore this email.</p>


----==_mimepart_517dcd2d93927_71bc677870116dc--

Redirected to http://test.testsitethefuture.com/login
Completed 302 Found in 2520ms (ActiveRecord: 0.0ms)
Started GET "/login" for 174.xx.xxx.xx at 2013-04-29 01:30:22 +0000
Processing by Devise::SessionsController#new as HTML
  BlogPost Load (3.0ms)  SELECT `blog_posts`.* FROM `blog_posts` 
  Rendered devise/_links.erb (0.8ms)
  Rendered devise/sessions/new.html.erb within layouts/application (7.0ms)
  Rendered layouts/_shim.html.erb (0.0ms)
  Rendered layouts/_header.html.erb (2.2ms)
  Rendered layouts/_promo_bar.html.erb (1.2ms)
  Rendered layouts/_footer.html.erb (2.6ms)
Completed 200 OK in 49ms (Views: 35.9ms | ActiveRecord: 3.0ms)

检查配置文件中的SMTP邮件程序设置,从日志中可以看出邮件正在正确发送,但由于SMTP设置问题,邮件未送达

更正smtp设置并从控制台检查邮件程序

Ex:-

Notification.forgot_password("sample@test.com").deliver

在config/environment.rb中使用行
ActionMailer::Base.delivery_method=:smtp
覆盖config/environment/test.rb中的
ActionMailer::Base.delivery_method=:test

因此,从config/environment.rb中添加那一行,
ActionMailer::Base.delivery\u method=:smtp',并将其放置在config/environments/test.rb中。这样你就可以

ActionMailer::Base.delivery\u method=:在config/environments/test.rb中进行测试

注意:必须重新启动服务器,这些更改才能生效。

在config/environment.rb中:

# Configuration for using SendGrid on Heroku
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => 'app[my app number]@heroku.com',
  :password       => '[something super secret]',
  :domain         => '[let's get this party started!.com]',
  :enable_starttls_auto => true
}
ActionMailer::Base.delivery_method = :smtp

为我工作。

如果您有机会发布您的邮件配置,请在
production
development
中的
config.mail
块中进行设置。如果我的邮件配置设置不正确,则不会发送电子邮件。除密码重置外,所有电子邮件均已发出。请参阅我的问题,第一句话:我的Desive controller在发送电子邮件时工作正常,但有一个例外:发送重置密码说明电子邮件。另外,在开发环境中,重置密码说明电子邮件发送正常。是的,我看到了,因为只有我告诉过你在控制台中尝试代码,在此之前检查smtp设置,如果你使用的是gmail smtp设置,请从邮件发送块删除回复。即使日志显示邮件正在发送,如果smtp设置错误,它也不会将邮件发送到电子邮件。你在用什么操作系统?你读了我的问题吗?1) 我没有用Heroku。2) 我没有ActionMailer::Base.delivery\u method=:test在我的test.rb中3)我已经有config.action\u mailer.delivery\u method=:smtp在我的test.rb中4)我没有使用SendGrid 5)我在config/environment中没有任何与邮件相关的内容。rbYes我读了你的问题尝试在中添加ActionMailer::Base.delivery\u method=:smtpconfig/environment.rb。这和你的问题很相似。我在heroku上创建了一个应用程序,遇到了同样的问题。我也解决了上面提到的问题。请选中Adding ActionMailer::Base.delivery_method=:smtp到config/environment.rb不起作用,并且根本不添加任何内容,因为该行已在/config/environments/test.rb中。阅读我的问题OK将行更改为ActionMailer::Base.delivery_method=:在config/environment/test.rb中进行测试,请检查。另外,在config/environment.rb中添加ActionMailer::Base.delivery_method=:smtp。我不会进行随机猜测。我已经有了一个environments/test.rb文件。阅读它,这样你就能理解为什么你的建议不起作用。
# Configuration for using SendGrid on Heroku
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => 'app[my app number]@heroku.com',
  :password       => '[something super secret]',
  :domain         => '[let's get this party started!.com]',
  :enable_starttls_auto => true
}
ActionMailer::Base.delivery_method = :smtp