在Rails中使用ActionMailer接收来自表单的电子邮件

问题描述 投票:0回答:1

我正在尝试使用Rails 5中的ActionMailer从联系表单接收电子邮件。但我不确定如何将表单上创建的资源的参数发送到接收方法上的电子邮件并将其发送到应用程序的电子邮件。

控制器/ contacts_controller.rb:

class ContactsController < ApplicationController

  def index
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(contact_params)
    if @contact.save
      DefaultMailer.receive(@contact).deliver
      redirect_to root_path
    else
      render :new
    end
  end

  private
  def contact_params
    params.require(:contact).permit(:name, :email, :subject, :body)
  end
end

邮寄/ default_mailer.rb:

class DefaultMailer < ApplicationMailer
  default from: "[email protected]"

  def receive(email)
    mail.create(subject: email.subject, body: email.body)
  end
end

它给出了500服务器错误,并在接收器方法中为nil:NilClass表示未定义的方法`humanize'。

ruby-on-rails actionmailer
1个回答
1
投票

这是一个联系表单,因此您希望将电子邮件发送给自己,因此您需要to:键值对。

包含联系人姓名和电子邮件也很有用,这样您就可以知道在哪里发送任何回复。

def receive(contact)
  mail(to: "[email protected]", 
       subject: contact.subject, 
       body: contact.body.to_s + 
            "\n (Sender is #{contact.name} and their email is #{contact.email})")
end
© www.soinside.com 2019 - 2024. All rights reserved.