Railsの技: email_address_with_nameで表示名付きのメールを送信する(翻訳)
ほとんどのメールソフトでは、メールアドレスの直前に以下のように表示名を追加できます。
To: Matt Swanson <matt@example.com>
小さな工夫ですが、表示名があるとメールアドレスが読みやすくなります。Railsには、文字列を手動で操作せずにこのスタイルでメールアドレスを整形するヘルパーユーティリティが用意されています。
利用法
email_address_with_name
を使うと、以下のようにメールアドレスの直前に名前を標準的な形で追加できます。
ActionMailer::Base.email_address_with_name("swan3788@gmail.com", "Matt Swanson")
#=> "Matt Swanson <swan3788@gmail.com>"
このヘルパーはRailsのあらゆるメイラーで利用できます。
class UserMailer < ApplicationMailer
default from: 'notifications@example.com'
def welcome_email
@user = params[:user]
mail(
to: email_address_with_name(@user.email, @user.display_name),
subject: 'You have a new message'
)
end
end
オプション
このヘルパーは以下のようにnil
もいい感じに扱ってくれます。
ActionMailer::Base.email_address_with_name("swan3788@gmail.com", nil)
#=> "swan3788@gmail.com"
さらに文字のエスケープも自動で対応します。
ActionMailer::Base.email_address_with_name("mike@example.com", "Michael J. Scott")
#=> "\"Michael J. Scott\" <mike@example.com>"
ActionMailer::Base.email_address_with_name("chip@example.com", 'John "Chip" Smith')
#=> "\"John \\\"Chip\\\" Smith\" <chip@example.com>"
参考資料
- Rails APIドキュメント:
ActionMailer::Base#email_address_with_name
概要
原著者の許諾を得て翻訳・公開いたします。
日本語タイトルは内容に即したものにしました。