用mail_form发送感谢信息

时间:2015-10-22 14:37:08

标签: ruby-on-rails email mail-form

我正在使用mail_form + simple_form gems在用户在我的网站上提交“联系我们”表单后向我自己发送电子邮件。然后我还将字段提交到数据库。这里的一切都很好。

我希望能够在提交后直接向用户的电子邮件地址发送第二封电子邮件,并附上“谢谢”消息和其他一些副本。我知道可以使用flash发布消息,但在我的情况下,向用户发送的电子邮件会更好。

有人可以根据下面的代码提供一些指导吗?谢谢!

型号:page.rb

class Page < ActiveRecord::Base
  include MailForm::Delivery
  attribute :name,      :validate => true
  attribute :company
  attribute :email,     :validate => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
  attribute :message
  attribute :nickname,  :captcha  => true

  def headers
    {
      :subject => "New Lead from Composites First",
      :to => "myemail@myemail.com",
      :from => "myemail@myemail.com"
    }
  end
end

Controller:pages_controller.rb

class PagesController < ApplicationController
  def index
  end

  def basicform
    @page = Page.new
  end 

  def create
    @page = Page.create(page_params)
    if @page.save   
      respond_to do |format|
        format.html { redirect_to '/' }
        format.json { } 
      end
    else
      respond_to do |format|
        format.html { }
        format.json { }
      end
    end
    @page.request = request
    if @page.deliver
    else
      flash[:error] = 'Cannot send message.'
      format.html { redirect_to '/' }
    end
  end

  private 

  def page_params
      params.require(:page).permit(:name, :company, :email, :message)
  end
end

1 个答案:

答案 0 :(得分:0)

您可以编写after_create回调来触发感谢电子邮件。

在Page模型中写回调如下:

after_create :send_thank_you_email

def send_thank_you_email
  email = self.from 
  MyMailer.send_thank_you_email(email).deliver_now
end

现在在MyMailer中编写send_thank_you_email操作并创建邮件程序视图以感谢您的邮件。希望这可以帮助。谢谢!