首先需要在 config/application.rb
中配置發(fā)送郵件的相關(guān)配置
config.action_mailer.perform_caching = false
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.exmail.qq.com',
port: 465,
ssl: true,
user_name: '<username>',
password: '<password>',
authentication: 'plain',
enable_starttls_auto: true,
}
使用腳手架工具生成郵件視圖模板,腳手架工具會為我們自動創(chuàng)建發(fā)送郵件的方法慎皱、視圖模板莫瞬、測試以及預(yù)覽組件
$ rails g mailer welcome
Running via Spring preloader in process 59807
create app/mailers/welcome_mailer.rb
invoke erb
create app/views/welcome_mailer
invoke test_unit
create test/mailers/welcome_mailer_test.rb
create test/mailers/previews/welcome_mailer_preview.rb
打開 app/mailers/application_mailer.rb
文件,替換 default from
后面的參數(shù)為發(fā)件人郵箱外厂,如:
class ApplicationMailer < ActionMailer::Base
default from: 'xxxxxxxx@qq.com'
layout 'mailer'
end
打開 app/mailers/welcome_mailer.rb
文件谴蔑,編輯收件人和郵件主題豌骏,如:
class WelcomeMailer < ApplicationMailer
def welcome_mail(member)
@member = member
mail to: @member.email, subject: 'Welcome to My Awesome Site'
end
end
在 app/views/welcome_mailer
文件夾中創(chuàng)建 welcome_mailer.html.erb
文件龟梦,使用 html
來編寫郵件的視圖。如下:
<h1>Welcome to example.com, <%= @member.username %></h1>
<h3>You have successfully signed up to example.com</h3>
<h3>Thanks for joining and have a great day!</h3>
然后窃躲,你就可以測試發(fā)送郵件了计贰。
WelcomeMailer.welcome_mail(@member).deliver_later # 延遲發(fā)送郵件
WelcomeMailer.welcome_mail(@member).deliver_now # 立即發(fā)送郵件
Rails
可以支持預(yù)覽郵件內(nèi)容。打開 test/mailers/previews/welcome_mailer_preview.rb
文件蒂窒。添加與發(fā)送郵件同名方法躁倒,如:
class WelcomeMailerPreview < ActionMailer::Preview
def welcome_mail
WelcomeMailer.welcome_mail(Member.first)
end
end
然后啟動你的 Rails
應(yīng)用,訪問 http://localhost:3000/rails/mailers/welcome_mailer/welcome_mail 進(jìn)行預(yù)覽洒琢。
關(guān)于發(fā)送郵件更多的資料可以在 https://ruby-china.github.io/rails-guides/action_mailer_basics.html 中查看秧秉。