在几乎所有的电子邮件程序中,你可以像这样在你的电子邮件地址前添加一个显示名称:
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>"