动态设计发件人电子邮件地址

Posted

技术标签:

【中文标题】动态设计发件人电子邮件地址【英文标题】:Dynamic Devise Sender email address 【发布时间】:2013-07-02 02:18:11 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

config.mailer_sender = Proc.new  I18n.t('mailers.from') 

【讨论】:

谢谢!这正是我也在寻找它的原因。【参考方案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>"

【讨论】:

【参考方案3】:

您可以根据每个电子邮件设置 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"

到您的自定义邮件。

【讨论】:

如果我调用“忘记密码”或“更改密码”的内置电子邮件发送功能。在哪里可以根据用户主机设置发件人电子邮件地址设置?上述示例将如何提供帮助和工作。你能解释一下吗? 我在上面编辑我的答案,检查设计文档,应该很容易做到。 也可以查看这篇帖子link 谢谢亨利 - 它奏效了。事实上,上述链接有所帮助。再次感谢男人

以上是关于动态设计发件人电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

Django 设置 - DEFAULT_FROM_EMAIL 的动态值

从电子邮件文本中解析“发件人”地址

怎样追踪电子邮件中发件人的IP地址?有人知道吗?

如何设置 mailx 命令的发件人电子邮件地址?

如何在python电子邮件脚本中的发件人地址之前添加发件人姓名

电子邮件转发会删除 Google 应用脚本中的原始发件人电子邮件地址