Rails Mail
以一个密码找回的实例来演示rails发送邮件:
使用的是公司的邮件服务器,如果没有邮件服务器,可以本地安装一个邮件服务器,具体方法可以baidu、google
1.在environment.rb中配置邮件参数:
Rails::Initializer.run do |config|
#config.action_mailer.deliver_method = :smtp | :sendmail | :test
config.action_mailer.smtp_settings ={
#邮件服务器地址
:address => "",
#邮件服务器端口
:port => 25,
:domain =>"",
#认证方式
:authentication => :login,
#用户名
:user_name => "",
#密码
:password =>""
}
#邮件发送出错是否报错,一般为false
config.action_mailer.raise_delivery_errors = true
#默认编码
config.action_mailer.default_charset = "utf-8"
end
2.编写处理邮件的类和邮件内容
在model中创建Email.rb,代码如下:
class Email < ActionMailer::Base
def send(user)
#邮件标题
@subject = "密码找回!"
#接受者email地址
@recipients=user.email
#邮件发送方email地址
@from = ''
#邮件发送时间
@send_on = Time.now
#@headers = {}
#编码方式
@charset = "utf-8"
#传递给view页面的实例,从而view页面就可以使用此实例
@body[:user] = user
end
end
在view/email下创建与model/Email中send方法同名的send.rhtml ,此页面即为邮件显示内容,代码如下:
send.rhtml
<html>
<head></head>
<body>
<!--使用model/Email中 send方法中的@body[:user] = user-->
<p>Dear <%= @user.username %>: </p>
<p>您的密码已经修改为:<%= @user.password%> </p>
</body>
</html>
3.创建控制器
class GetbackpwdController < ApplicationController
def emailsend
.........
#model/Email使用create_###(###为Email中对应的action名)创建一个Rails email实例
email = Email.create_send(user)
#设置为html格式
email.set_content_type("text/html" )
#发送邮件
Email.deliver(email);
..........
end
end