在用户模型中,每个用户都属于不同的域/主机。我想根据用户的域名将其设置为与地址不同。我可以在某个地方的用户模型中设置它,或者如何根据用户的域使发件人地址动态。
我们在app/config/initializer/devise.rb
中设置了默认发件人地址
Devise.setup do |config|
config.mailer_sender = SOME EMAIL ADDRESS
end
答案 0 :(得分:8)
我碰到了这个,因为我想从I18n中提取from
地址,但初始化程序在I18n设置之前运行。这对我来说是最简单的解决方案:
config.mailer_sender = Proc.new { I18n.t('mailers.from') }
答案 1 :(得分:2)
要使用Devise的Mailer帮助程序功能,请扩展设计邮件程序,并覆盖需要不同动态发件人的方法/邮件:
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>"
答案 2 :(得分: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"
到您的自定义邮件程序。