7

在用户模型中,每个用户属于不同的域/主机。我想根据用户的域将它设置为与地址不同。我可以在某处的用户模型中设置它,或者如何根据用户的域使发件人地址动态化。

我们将设计默认发件人地址设置app/config/initializer/devise.rb

Devise.setup do |config|
  config.mailer_sender = SOME EMAIL ADDRESS
end
4

3 回答 3

10

我碰到这个是因为我想from从 I18n 中提取地址,但是初始化程序在 I18n 设置之前就已经运行了。这对我来说是最简单的解决方案:

config.mailer_sender = Proc.new { I18n.t('mailers.from') }
于 2014-09-29T16:59:27.350 回答
2

要使用 Devise 的 Mailer 帮助函数,请扩展 devise 邮件程序,并覆盖需要不同动态发件人的方法/邮件:

class CustomDeviseMailer < Devise::Mailer
  def confirmation_instructions(record, token, opts={})
    @token = token
    opts[:from] = "Dynamic Sender <dynamic@foo.com>"
    devise_mail(record, :confirmation_instructions, opts)
  end
end

并在你里面配置它devise.rb

config.mailer = "CustomDeviseMailer"

注意:如果您不需要动态发件人,只需在以下位置定义发件人devise.rb

config.mailer_sender = "Static sender <static@foo.com>"
于 2014-04-04T06:38:39.637 回答
1

您可以根据每个电子邮件设置 mail.from

class UserMailer <ActionMailer::Base

def notification_email(user)
  mail(to:example@example.com, from:user.email, ...)
end

这将覆盖您的默认设置。

我认为您可以在 config/initializers/devise.rb 中更改此设置

  # Configure the class responsible to send e-mails.
  # config.mailer = "Devise::Mailer"
   config.mailer = "UserMailer"

到您的定制邮件。

于 2013-07-04T07:36:24.357 回答