如何将动态内容放入动作邮件主题行?

时间:2012-10-10 19:39:39

标签: ruby ruby-on-rails-3 actionmailer

我正在尝试将我的应用名称放在动作邮件发送的电子邮件主题行中。使用默认的电子邮件地址执行此操作时没有问题,但是当我尝试将其添加到主题时,它会将其作为纯文本<%= app_name %>发送。

这是我的邮件程序/ user_mailer.rb:

class UserMailer < ActionMailer::Base  
  add_template_helper(ApplicationHelper)
  extend ApplicationHelper

  default from: "#{app_name} <#{system_email}>"

  def reset_password_email(user)
    @user = user
    @url  = "#{root_url}/password_resets/#{user.reset_password_token}/edit"
    mail(:to => user.email,
         :subject => "Reset Your Password | #{app_name}")
  end
end

以下是我在应用程序助手中的内容:

  def app_name
    'Tip Share'
  end

  def app_domain
    'tipshare.herokuapp.com'
  end

  def system_email
    'info@wingardcreative.com'
  end

#{app_name}<%= app_name %>都无效。我该怎么做?

2 个答案:

答案 0 :(得分:1)

您是否尝试过这样添加:

include ApplicationHelper

答案 1 :(得分:0)

通过使用UserMailer扩展ApplicationHelper,这些方法可用作类方法 - 这就是default from: "#{app_name} <#{system_email}>"中的引用有效的原因。 在reset_password_email方法中,app_name将是未定义的局部变量。 因此,您需要另外include ApplicationHelper,或使用self.class.app_name调用它。