ruby on rails使用gmail的smtp发送邮件

参考至http://guides.rubyonrails.org/action_mailer_basics.html

  1. 在gmail账户的安全里先开启两步验证(链接:https://myaccount.google.com/security),在生成一个应用专用密码,再后面需要使用。
  2. 在控制台下进入到rails项目的根目录,执行rails generate mailer UserMailer
  3. 找到app/mailers/user_mailer.rb文件,如下图:
  4. 在第三步里,可以看到在UserMailer里添加了send_email方法,接下来就需要创建对应的Mailer的视图,在app/views/user_mailer文件夹下(因为有些邮件客户端不支持html,所以同时创建一个text文本,两个一起发送),和方法名一致,当调用send_email,就会使用对应的视图。UserMailer就是一个控制器,send_email就是action,send_email.html.erb和send_email.text.erb就是对应的视图。
  5. send_email.html.erb内容
    send_email.text.erb的内容就是把send_email.html.erb里的所有html标签去掉,只留下文本,如下图:
  6. 现在controller#action view都有了,由于只是简单测试,model就没有加上,只需在action改成对应model的邮件或者其他的就可以了。
  7. 接下来在config/application.rb文件中配置gmail的smtp服务器,如下图(由于gmail需要FQ才能测试,所以在实际开发中,关于gmail的smtp服务器的配置可以放在production.rb文件中,在test.rb和development.rb文件中用其他邮箱代替,我使用的是qq的smtp服务器,只要的qq中开通smtp服务,并且获得qq的客户端的专用密码)

    qq的smtp服务配置
  8. 最后一步,通过调用UserMailer.send_email.deliver_now就能发送邮件
    UserMailer.send_email.deliver_now

     

  9. 由于使用的gmail的smtp服务器,测试需要FQ,所以本地也就没法测试。但是本人部署到heroku上确实是可以成功发送邮件的。

posted on 2016-01-23 10:12  jec  阅读(1068)  评论(0编辑  收藏  举报

导航