Action Mailer – 輕鬆傳送和測試電子郵件
Action Mailer 是用於設計電子郵件服務層的架構。這些層用於整合傳送忘記密碼、註冊歡迎信、帳單發票等任何需要以書面通知個人或其他系統的用例的程式碼。
Action Mailer 本質上是 Action Controller 和 Mail
gem 的包裝器。它提供一種使用範本製作電子郵件的方式,就像 Action Controller 使用範本呈現檢視一樣。
此外,Action Mailer 類別可用於處理接收的電子郵件,例如允許部落格從電子郵件接受新文章(甚至可以從手機傳送)。
您可以在 Action Mailer Basics 指南中閱讀更多關於 Action Mailer 的資訊。
傳送電子郵件
此架構的運作方式是初始化您希望在電子郵件範本中使用的任何實例變數,然後呼叫 mail
來傳送電子郵件。
這可以像這樣簡單
class Notifier < ActionMailer::Base
default from: '[email protected]'
def welcome(recipient)
@recipient = recipient
mail(to: recipient,
subject: "[Signed up] Welcome #{recipient}")
end
end
電子郵件的內文是使用 Action View 範本(常規 ERB
)建立的,其中包含在郵件動作中宣告的實例變數。
因此,上述方法的對應內文範本可能如下所示
Hello there,
Mr. <%= @recipient %>
Thank you for signing up!
如果收件人給定為 “[email protected]”,則產生的電子郵件將如下所示
Date: Mon, 25 Jan 2010 22:48:09 +1100
From: [email protected]
To: [email protected]
Message-ID: <[email protected]>
Subject: [Signed up] Welcome [email protected]
Mime-Version: 1.0
Content-Type: text/plain;
charset="US-ASCII";
Content-Transfer-Encoding: 7bit
Hello there,
Mr. [email protected]
Thank you for signing up!
為了傳送郵件,您只需呼叫方法,然後在傳回值上呼叫 deliver_now
。
呼叫方法會傳回 Mail
訊息物件
message = Notifier.welcome("[email protected]") # => Returns a Mail::Message object
message.deliver_now # => delivers the email
或者您可以像這樣串連方法
Notifier.welcome("[email protected]").deliver_now # Creates the email and sends it immediately
設定預設值
可以設定預設值,這些值將用於 Action Mailer 類別中的每個方法。要實作此功能,您只需呼叫公共類別方法 default
,您可以從 ActionMailer::Base
免費取得。此方法接受 Hash
作為參數。您可以使用電子郵件訊息的任何標頭,例如 :from
作為金鑰。您也可以傳入字串作為金鑰,例如 “Content-Type”,但 Action Mailer 會自動為您處理,因此您不必擔心這一點。最後,也可以傳入一個 Proc,它會在需要時進行評估。
請注意,如果你在郵件寄送方法中使用相同的金鑰,你使用此方法設定的每個值都會被覆寫。
範例
class AuthenticationMailer < ActionMailer::Base
default from: "[email protected]", subject: Proc.new { "E-mail was generated at #{Time.now}" }
.....
end
設定
Base 類別有完整的設定選項清單。以下是範例
ActionMailer::Base.smtp_settings = {
address: 'smtp.yourserver.com', # default: localhost
port: '25', # default: 25
user_name: 'user',
password: 'pass',
authentication: :plain # :plain, :login or :cram_md5
}
下載和安裝
Action Mailer 的最新版本可以使用 RubyGems 安裝
$ gem install actionmailer
原始碼可以從 GitHub 上的 Rails 專案下載
授權
Action Mailer 採用 MIT 授權釋出
支援
API 文件在
Ruby on Rails 專案的錯誤回報可以提交到這裡
功能要求應在這裡的 rails-core 郵件清單中討論