Rails 發(fā)送郵件

首先需要在 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 進行預(yù)覽。

關(guān)于發(fā)送郵件更多的資料可以在 https://ruby-china.github.io/rails-guides/action_mailer_basics.html 中查看。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容