標籤:
參考至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上確實是可以成功發送郵件的。
ruby on rails使用gmail的smtp發送郵件