在 rails 中向两个收件人发送表单

sending a form to two recipients in rails

我有一个 rails 模型 registrations 具有以下字段

attr_accessible :address, :company, :name, :phone, :email

我已经能够通过用户填写的电子邮件成功地向用户发送邮件,并且使用 action mailer 成功地工作

def create
    @registration = Registration.new(params[:registration])

    respond_to do |format|
      if @registration.save
        UserMailer.registration_confirmation(@registration).deliver

        format.html { redirect_to root_path, notice:"  Thanks! #{@registration.name}, Your registration have been
        confirmed & your seat reserved" }
        format.json { render :show, status: :created, location: @registration }
      else
        format.html { render action: "new" }
        format.json { render json: @registration.errors, status: :unprocessable_entity }
      end
    end
  end  

注册邮件是这样的

def registration_confirmation(registration)

    @registration = registration
      @greeting = "Hi"
    mail(to: @registration.email, subject: 'Welcome')
  end 

效果很好...

我想要实现的是能够将邮件发送到另一个电子邮件地址,例如 (admin@gmail.com) 说明用户已注册并显示注册详细信息...谢谢

我会专门为应该发送给管理员的通知生成一个新的邮件程序。

rails g mailer AdminMailer registration_notice

然后您可以将 AdminMailer registration_notice 编辑为类似于您的 UserMailer,但收件人不同:

  def registration_notice(registration)
    @registration = registration
    mail(to: 'admin@gmail.com', subject: 'A new user has registered')
  end

将您想包含的任何注册详细信息放入 registration_notice.html.erb(或文本)的视图中。

然后只需在控制器的创建操作中添加对邮件程序的调用,就在对 UserMailer 的调用之后:

  def create
    @registration = Registration.new(params[:registration])

    respond_to do |format|
      if @registration.save
        UserMailer.registration_confirmation(@registration).deliver
        AdminMailer.registration_notice(@registration).deliver
        # etc
      end
    end
  end

您可能还想考虑在后台发送邮件,而不是让用户等待创建请求完成,但这超出了这个问题的范围。