Rails 5联系我表单不通过heroku使用sendgrid发送电子邮件

时间:2017-04-26 14:16:33

标签: ruby-on-rails heroku sendgrid sendgrid-ruby

我一直关注此博客文章,关于创建一个与我联系的问题'形式和邮件。我已经足够远,我的表单显示Messaged Received但我从未收到过电子邮件,也没有收到Span文件夹。我使用Devise工作得很好,用于用户身份验证,所以我知道这方面有效。

消息/ new.html.erb

<%= form_for @message, url: create_message_url do |f| %>
  <%= notice %>
  <%= @message.errors.full_messages.join(', ') %>

  <%= f.text_field :name, placeholder: 'name' %>
  <%= f.email_field :email, placeholder: 'email' %>
  <%= f.text_area :body, placeholder: 'body' %>
  <%= f.submit 'Send' %>
<% end %>

控制器/ messages_controller.rb

class MessagesController < ApplicationController

def new
  @message = Message.new
end

def create
  @message = Message.new message_params

  if @message.valid?
    redirect_to new_message_url, notice: "Message received, thanks!"
  else
    render :new
  end
end

private

def message_params
  params.require(:message).permit(:name, :email, :body)
end

end

寄件人/ message_mailer.rb

class MessageMailer < ApplicationMailer
  def contact_me(message)
    @body = message.body

    mail to: "<mydomainemail>", from: message.email
  end
end

测试不会抛出任何错误,我也可以预览好电子邮件。

我还缺少什么?

1 个答案:

答案 0 :(得分:1)

我并不认为你实际上正在触发控制器中的发送事件。如果我正确理解您的过程,您的create方法应该在邮件程序和消息上使用.deliver方法。

def create
  @message = Message.new message_params

  if @message.valid?
    MessageMailer.contact_me(@message).deliver <-- This
    redirect_to new_message_url, notice: "Message received, thanks!"
  else
    render :new
  end
end