2015-03-13 57 views
0

我正在构建一个具有帐户激活功能的Web应用程序。我遵循Michael Hartl ROR教程,我没有收到任何帐户激活邮件到我的收件箱。我试图在网上搜索如何验证是否发送了一封电子邮件。就像应该有一个我们配置为发送电子邮件的SMTP服务器?没有找到有用的东西。有人可以帮忙吗?如何验证是否在Ruby on Rails Web应用程序中发送帐户激活电子邮件

我account_activations_controller.rb

class AccountActivationsController < ApplicationController 

    def edit 
    user = User.find_by(email: params[:email]) 
    if user && !user.activated? && user.authenticated?(:activation, params[:id]) 
     user.activate 
     log_in user 
     flash[:success] = "Account activated!" 
     redirect_to user 
    else 
     flash[:danger] = "Invalid activation link" 
     redirect_to root_url 
    end 
    end 
end 

User_mailer.rb

class UserMailer < ApplicationMailer 

    def account_activation(user) 
    @user = user 
    mail to: user.email, subject: "Account activation" 
    end 
end 

application_mailer.rb

class ApplicationMailer < ActionMailer::Base 
    default from: "[email protected]" 
    layout 'mailer' 
end 

development.rb

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.delivery_method = :test 
    host = 'localhost:3000' 
    config.action_mailer.default_url_options = { :host=> host } 
+0

你需要激活帐号或配置发送电子邮件? – 2015-03-13 14:45:33

+0

您应该添加一些关于您如何发送电子邮件的详细信息,而不是假设每个人都熟悉教程。任何电子邮件发送方法都需要您执行一些配置才能使其工作。你做到了吗? – 2015-03-13 14:56:21

+0

@MaxWilliams对不起,我已经更新了我的配置详细问题 – Sandeep 2015-03-13 15:13:51

回答

2

桑迪普,

请继续阅读本教程。我使用了老版本的Michael的教程来学习rails,但是当我想发送确认邮件时又回来了。我认为你不应该期望发送真正的电子邮件(至少不是在开发模式下),Rails 4.1.x有邮件预览,你可以查看,我认为这是教程涵盖的内容。

当您到达生产环境时,您需要设置一个外部服务器来发送实际的电子邮件,但这将位于production.rb文件中。如果你只是在学习,那么你有很多选择,包括设置一个Gmail帐户(与你的私人帐户分开),每天发送有限数量的电子邮件。

这里是我想你应该看看链接: listing 10.15

我与迈克尔·哈特尔的教程经验是,它几乎是完美无瑕的,你可能有特定的系统设置问题或两个,但我认为在大多数情况下,我所遇到的任何问题都与我无关,没有正确遵循文本。

希望这个帮助,祝你好运!

+0

非常感谢您的回答。我不知道我现在不应该期待电子邮件以开发模式发送。我没有看到它。 是的,我读了关于在production.rb文件中设置gmail帐户以发送电子邮件。我在users.rb中输入了相同的细节,认为它可以在我的开发环境中工作。 反正我会继续教程。再次感谢! – Sandeep 2015-03-15 04:43:16

+0

我的意思是development.rb文件不是users.rb – Sandeep 2015-03-15 04:50:09

1

添加到您的config/environments/development.rb文件

config.action_mailer.raise_delivery_errors = true 

所以你收到此通知,如果有电子邮件递送错误。

除此之外,您可以添加一个字段到如activation_sent_at这样的users表中,并在发送电子邮件时填充它,以便稍后参考。

+0

我已经将config.action_mailer.raise_delivery_errors设置为true。如何/我在哪里得到准确的通知?在development.log中 – Sandeep 2015-03-13 14:55:34

+0

我在我的日志中看到邮件已发送。但我没有在我的收件箱中, – Sandeep 2015-03-13 15:00:06

+0

这样,如果在发送邮件时代码出现问题,它将引发错误。我强烈建议你阅读[documentation](http://guides.rubyonrails.org/action_mailer_basics.html)。 – DevMarwen 2015-03-13 18:20:53

1

从491页的底部写着:“请注意,您将在开发环境中收到实际的电子邮件,但它会在你的服务器日志显示10.3节讨论了如何发送电子邮件真正的生产环境。”所以如果你想明确地跟随文本,我会在第10.3节中检查好东西。希望有所帮助!

相关问题