【问题标题】:Rails 5 contact Me form not sending email using sendgrid via herokuRails 5联系我表格不通过heroku使用sendgrid发送电子邮件
【发布时间】:2017-04-26 14:16:32
【问题描述】:

我一直在关注这篇关于创建“联系我”表单和邮件的博文。我已经够远了,我的表单显示已收到消息,但我从未收到过电子邮件,也没有在 Span 文件夹中。我已经让 sendgrid 与 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

mailers/message_mailer.rb

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

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

测试没有报错,我也可以预览邮件ok。

我还有什么遗漏的吗?

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 我怎么错过了!?
    • 电子邮件刚刚通过!感谢您发现这一点。我实际使用过:MessageMailer.contact_me(@message).deliver_now
    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    相关资源
    最近更新 更多