背景:在我们的应用中,我们经常让销售代表使用销售员的计算机为客户进行设置(通常客户在我们设置他们时无法访问他们的电子邮件)。因此,我们考虑在设备注册表单中添加一个字段,用于销售代表的电子邮件地址,并使确认链接也发送到该电子邮件地址。
问题:是否有一种方法可以告诉设备将初始确认电子邮件(仅限初始确认电子邮件)暗送或抄送到提供在新用户注册表单上的“备用电子邮件”电子邮件地址(如果有)?
或者,是否有一种方法可以“禁用”确认电子邮件流程,但仅当输入特定代码时才能禁用?
我知道如何向设备注册表单添加另一个字段,但我不知道/不清楚如何修改设备邮件程序代码,以便在确认电子邮件发送到“电子邮件”地址时,它也会发送到“备用电子邮件”地址(如果有,则有时为空)。
感谢 Johnny Grass!
我执行了rails generate mailer CustomerUserMailer
并添加了以下内容
#config/initializers/devise.rb
config.mailer = "CustomUserMailer"
我的自定义邮件程序如下:
# app/mailers/customer_user_mailer.rb
class CustomUserMailer < Devise::Mailer
def headers_for(action)
headers = {
:subject => translate(devise_mapping, action),
:from => mailer_sender(devise_mapping),
:to => resource.email,
:cc => resource.backup_user_email(action),
:template_path => template_paths
}
end
end
然后我将3封邮件模板从views/devise/mailer
移动到views/customer_user_mailer
(否则邮件将为空)
接着,我在我的User
模型中添加了一个名为backup_user_email()
的方法,该方法基于用户记录和操作返回“备份”电子邮件地址(如果有)。唯一的“技巧”是在测试action
时,不是action == "confirmation_instructions"
,而是action == :confirmation_instructions
。
:template_path
改成:template_path => "devise/mailer"
,我就可以使用我已经创建的模板。 - Calciphus