用`email_address_with_name`改善你的Rails邮件系统(方法指南)

39 阅读1分钟

在几乎所有的电子邮件程序中,你可以像这样在你的电子邮件地址前添加一个显示名称:

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