我想在用户注册时做一个简单的电子邮件通知。
我的用户注册工作正常,我完全按照"发送电子邮件"教程,但不能让它工作。我做错了什么?
user_controller.rb
class Admin::UsersController < InheritedResources::Base
before_filter :admin_only
actions :index, :show, :new, :edit, :create, :update, :destroy
respond_to :html
# def new
# @user = User.new(:invitation_token => params[:invitation_token])
# @user.email = @user.invitation.recipient_email
# end
def create
@user = User.new(params[:user])
UserMailer.deliver_registration_confirmation(@user) < -- where I added the mailer
@user.save(false)
respond_to do |format|
format.html{ redirect_to admin_users_path}
end
end
private
def collection
paginate_options ||= {}
paginate_options[:page] ||= (params[:page] || 1)
paginate_options[:per_page] ||= (params[:per_page] || 20)
@search = User.search(params[:search])
@users ||= @search.all.paginate(paginate_options)
end
end
环境/production.rb
# Settings specified here will take precedence over those in config/environment.rb
config.action_mailer.default_url_options = { :host => 'alpine.totaline.com' }
config.action_mailer.raise_delivery_errors = true
# set delivery method to :smtp, :sendmail or :test
config.action_mailer.delivery_method = :smtp
# these options are only needed if you choose smtp delivery
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 25,
:domain => 'alpine.totaline.com',
:authentication => :login,
:user_name => 'emailname@gmail.com',
:password => 'thepassword'
}
模型/user_mailer.rb
class UserMailer < ActionMailer::Base
def registration_confirmation(user)
recipients user.email
from "webmaster@alpinechallenge.com"
subject "Thank you for Registering"
body "You are now registered on the Alpine Challenge!"
end
end
看起来Gmail需要使用587端口:
# these options are only needed if you choose smtp delivery
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => '587',
:domain => 'alpine.totaline.com',
:authentication => :login,
:user_name => 'emailname@gmail.com',
:password => 'thepassword'
}
此页面包含有关配置Gmail邮件客户端的说明