如何在 Rails 中为联系表单设置邮件投递



我正在尝试使用我在Railscast中看到的关于ActiveAttr的方法构建一个联系表单(它给了我一个不受数据库支持的消息模型)。

此代码位于消息的控制器中:

class MessagesController < ApplicationController
  def new
    @message = Message.new
  end
  def create
   @message = Message.new(params[:message])
   if @message.valid?
     # TODO send message here
     redirect_to root_url, notice: "Message sent! Thank you for contacting us."
   else
     render "new"
   end
  end
end

我不知道我需要编写哪种代码才能在create操作期间将联系表单输入(消息)发送到特定的电子邮件地址。 有人可以给我一个大致的概述,我需要知道或需要设置什么才能完成这项工作吗?谢谢。

您可以添加这样的东西。

def create
  @message = Message.new(params[:message])
  if @message.valid?
    UserMailer.send_message(@message).deliver
    redirect_to whatever_path, notice: "Message sent."
  else
    render "new"
  end
end

您将需要创建一个邮件程序。这很容易,Rails已经有一个关于如何做到这一点的很好的指南。http://guides.rubyonrails.org/action_mailer_basics.html

创建邮件程序

rails generate mailer UserMailer

然后在您的用户邮件appmailersuser_mailer.rb

def send_message(message)
  @message = message
  email = "myemail@example.com"
  mail to: email, subject: "You have received a message"
end

然后创建电子邮件视图appviewsuser_mailer.txt.erb

You have a new message
Your message says
<%= @message.whatever_attribute %>