如何从名称访问 ActionMailer

How to access the ActionMailer from name

我有一个 ActionMailer,它有一个来自 NAME 的变量,因此我想测试名称是否设置正确。

简而言之:

  def test_email()
    mail({
      :from    => '"John Smith"<john@smith.com>'
    })
  end

如果我随后生成一个邮件程序并尝试访问来自...

$ m = UserMailer.test_email
$ m.from
=> ["john@smith.com"]

我刚刚得到电子邮件地址。如何访问 "John Smith" 部分?

您可以像这样从 headers 中提取它。

m.header.select { |i| i.name == "From" }.first.value[/\"(.*?)\"/,0]

如果您也想删除可疑引号,请执行以下操作:

m.header.select { |i| i.name == "From" }.first.value[/\"(.*?)\"/,0][1..-2]

您传递到邮件中的字符串(将包含在 From: header 中)与邮件的实际电子邮件地址(因此将被使用)之间存在差异在 SMTP MAIL FROM 命令中)。

如果您想查看传入的值,请使用:

m[:from].value