使用rails版本3.2.5中的动作邮件程序发送电子邮件

时间:2012-07-26 13:00:19

标签: ruby-on-rails ruby

我知道这是一个简单的问题,并且被问了很多次,我也问了这个问题,因为我之前检查的所有内容都是基于rails 3.0.0版本而我使用的是最新版本。我有一个用户注册表单,其中包含姓名和电子邮件字段。我想这样做当用户点击提交按钮时,用户应该将电子邮件发送到指定的电子邮件地址我使用的是rails 3.2.5版本和gem' mail'版本2.4.4开发日志文件显示邮件已发送到电子邮件地址但在收件箱中找不到。我也知道在开发模式期间,邮件程序没有向任何地址发送邮件,但我想在开发阶段执行此操作。我的代码是:

/config/initializers/setup_mail.rb

ActionMailer::Base.smtp_settings = {
:address              => "smtp.gmail.com",
:port                 => 587,
:domain               => "asciicasts.com",
:user_name            => "asciicasts",
:password             => "secret",
:authentication       => "plain",
:enable_starttls_auto => true
}

/app/mailers/user_mailer.rb

class UserMailer < ActionMailer::Base
default :from => "eifion@asciicasts.com"

def registration_confirmation(user)
mail(:to => user.email, :subject => "Registered")
end
end

/app/controllers/users_controller.rb

def create
@user = User.new(params[:user])

respond_to do |format|
if @user.save
UserMailer.registration_confirmation(@user).deliver
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml  { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end

所以请任何人帮助我。

1 个答案:

答案 0 :(得分:2)

我最近也遇到过这样的事情。

来自config/environments/development.rb

config.action_mailer.perform_deliveries = true#此条目让我觉得应该发送电子邮件,这些电子邮件是在开发人员升级之前完成的。

我还发现这些电子邮件没有被发送。四处搜寻,我发现config/email.yml看起来像这样:

development:
  :delivery_method: test
  :settings:
    :address: <email_server_address>
    :port: 25

当我将:delivery_method: test更改为:delivery_method: sendmail时(这是我们公司使用的),它开始工作。

总而言之,我发现config/email.yml中的设置是最后评估的,并且会胜过您个人环境文件中的任何内容。