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