如何验证是否在Ruby on Rails Web应用程序中发送了帐户激活电子邮件

时间:2015-03-13 14:30:02

标签: ruby-on-rails ruby-on-rails-3

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

我的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: "noreply@example.com"
  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 }

3 个答案:

答案 0 :(得分:2)

和Sandeep,

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

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

以下是我认为您应该注意的链接: listing 10.15

我对迈克尔·哈特尔的教程的经验是,它几乎是完美无缺的,你可能在你的特定系统设置上有一两个问题,但我认为在很大程度上我遇到的任何问题与我没有正确地遵循文本。

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

答案 1 :(得分:1)

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

config.action_mailer.raise_delivery_errors = true

如果电子邮件递送出错,您会收到通知。

除此之外,您可以在users表格中添加字段,例如activation_sent_at,并在发送电子邮件时填充该字段,以便日后再参考。

答案 2 :(得分:1)

从第491页的底部阅读:“请注意,您将在开发环境中收到实际的电子邮件,但它会显示在您的服务器日志中。第10.3节讨论了如何发送电子邮件在生产环境中真实存在。“

因此,如果您想明确地遵循文本,我会在第10.3节中查看好东西。希望有所帮助!