Rails 5 联系我表单未通过 heroku 使用 sendgrid 发送电子邮件
Rails 5 contact Me form not sending email using sendgrid via heroku
我一直在关注此博客 post 关于创建 'contact me' 表单和邮件程序的内容。我已经走得够远了,我的表单显示已收到消息,但我从未收到过电子邮件,也不在 Span 文件夹中。我让 sendgrid 与 Devise 一起正常工作以进行用户身份验证,所以我知道这方面工作正常。
Messages/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 %>
controllers/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。
还有什么我想念的吗?
在我看来,您实际上并没有在控制器中触发发送事件。如果我正确理解你的过程,你的创建方法应该在邮件和消息上有 .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
我一直在关注此博客 post 关于创建 'contact me' 表单和邮件程序的内容。我已经走得够远了,我的表单显示已收到消息,但我从未收到过电子邮件,也不在 Span 文件夹中。我让 sendgrid 与 Devise 一起正常工作以进行用户身份验证,所以我知道这方面工作正常。
Messages/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 %>
controllers/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。
还有什么我想念的吗?
在我看来,您实际上并没有在控制器中触发发送事件。如果我正确理解你的过程,你的创建方法应该在邮件和消息上有 .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