Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Railsの技: email_address_with_nameで表示名付きのメールを送信する(翻訳)

概要

原著者の許諾を得て翻訳・公開いたします。

日本語タイトルは内容に即したものにしました。

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>"

参考資料

関連記事


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。