[Ruby on Rails]Rails 3使用ActionMailer通过163发送邮件

作者: Roy,Song
发布时间:2015-07-13 11:29:45

最近用到发送邮件的功能,没办法只能现学,天生愚钝啊,用了两天才弄明白了。。记录一下
---------------------------------------------------
在models 里边新建一个mailer 模型

class Notifier < ActionMailer::Base
      def send_mail(params = {})
         load_settings_default
        @mail_body = params[:mail_body]
        mail(:subject => params[:subject],
               :to =>"*****@***.com",
               :from => '*****@163.com',
               :date => params[:date]
               )
     end
end
  
*subject主题.
    * body 是Ruby的hash结构。你可以创建三个值对title, email, message
    * recipients接受邮件的地址列表
    * from发件人地址列表.
    * sent_on发送时间.
    * headers是另外的hash结构标识header信息如,配置MIME typeplain text 或 HTML

---------------------------------------------

然后在controller 里边引用model中的方法
Notifier.send_mail({:subject => "subject", :mail=>"×××××××@###.com",:date => Time.now, :mail_body => "mail_body"}).deliver

(格式内容仅供参考)
上边是Rails3的调用方法之前版本的可以试一下:

Notifier.deliver_send_email({:subject => "subject", :mail=>"×××××××@###.com",:date => Time.now, :mail_body => "mail_body"})

--------------------------------------

最后在environment.rb里边设置发送邮件服务器

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
    :address => "smtp.163.com",
    :port => 25,
    #:domain => "www.163.com",
    :authentication => :login,
    :user_name => "*******@163.com",
    :password => "*******"   #用户名和密码是163邮箱的,需要验证
}

(位置要注意,放在最后的End后边或是environment.rb文件的最后)
---------------------------------------------------------
以上仅仅是个人总结的内容,如有误导大家,请见谅;有错误请指出~谢谢!

来源:http://www.cnblogs.com/royshj/archive/2013/03/07/2947737.htm

推荐: