默认邮件发送器

3

我有一个管理员邮件发送程序:

class AdminMailer < ApplicationMailer
  ADMIN_EMAIL = 'admin@gmail.com'

  def send1
    mail(to: ADMIN_EMAIL, subject: 'You have a new registered user')
  end

end

由于这是一个管理邮件发送程序,我想知道是否可以将邮件默认发送给管理员?类似于:

class AdminMailer < ApplicationMailer
  default to: 'admin@gmail.com'

我从未见过选项to,它是否存在?
2个回答

2

是的,可以将默认值设置为:to参数。

从Rails代码库中相关部分可以看到:# 您可以为上述任何标题(除了+:date+)设置默认值

请参阅https://github.com/rails/rails/blob/f6b21d48ef15d4f39a530653c2ce7d0cfb458b46/actionmailer/lib/action_mailer/base.rb#L702-L729中的代码注释。

# The main method that creates the message and renders the email templates. There are
# two ways to call this method, with a block, or without a block.
#
# It accepts a headers hash. This hash allows you to specify
# the most used headers in an email message, these are:
#
# * +:subject+ - The subject of the message, if this is omitted, Action Mailer will
#   ask the Rails I18n class for a translated +:subject+ in the scope of
#   <tt>[mailer_scope, action_name]</tt> or if this is missing, will translate the
#   humanized version of the +action_name+
# * +:to+ - Who the message is destined for, can be a string of addresses, or an array
#   of addresses.
# * +:from+ - Who the message is from
# * +:cc+ - Who you would like to Carbon-Copy on this email, can be a string of addresses,
#   or an array of addresses.
# * +:bcc+ - Who you would like to Blind-Carbon-Copy on this email, can be a string of
#   addresses, or an array of addresses.
# * +:reply_to+ - Who to set the Reply-To header of the email to.
# * +:date+ - The date to say the email was sent on.
#
# You can set default values for any of the above headers (except +:date+)
# by using the ::default class method:
#
#  class Notifier < ActionMailer::Base
#    default from: 'no-reply@test.lindsaar.net',
#            bcc: 'email_logger@test.lindsaar.net',
#            reply_to: 'bounces@test.lindsaar.net'
#  end

0
编辑:实际上我将mail封装到了mail_to_user中,设置了默认选项,因为这种方法会发送重复的电子邮件。

您可以在操作后执行此操作:

class ApplicationMailer < ActionMailer::Base
  after_action :set_default_to
  after_action :set_default_subject

  def set_default_to
    mail.to ||= user_email(current_user) if current_user
  end
  
  def set_default_subject
    mail.subject ||= I18n.t(subject_key)
  end
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接