Ruby on rails Rails联系人表单不发送电子邮件
我正在尝试在我的应用程序的页脚中设置一个简单的联系人表单。 表单验证工作正常,但我没有收到电子邮件 我遵循了这一点,但做了一些更改,因为联系人表单位于页脚,而不是Ruby on rails Rails联系人表单不发送电子邮件,ruby-on-rails,Ruby On Rails,我正在尝试在我的应用程序的页脚中设置一个简单的联系人表单。 表单验证工作正常,但我没有收到电子邮件 我遵循了这一点,但做了一些更改,因为联系人表单位于页脚,而不是messages/new.html.erb页面,在我的应用程序中不存在该页面 我的路由文件包含以下内容: post 'contact-me', to: 'messages#create', as: 'create_message' 以下是消息模型(无迁移)、控制器和邮件程序: # message.rb class Message
messages/new.html.erb
页面,在我的应用程序中不存在该页面
我的路由文件包含以下内容:
post 'contact-me', to: 'messages#create', as: 'create_message'
以下是消息模型(无迁移)、控制器和邮件程序:
# message.rb
class Message
include ActiveModel::Model
attr_accessor :name, :email, :body
validates :name, :email, :body, presence: true
end
# messages_controller.rb
class MessagesController < ApplicationController
def create
message_params = params.require(:message).permit(:name, :email, :body)
@message = Message.new message_params
if @message.valid?
MessageMailer.contact_me(@message).deliver_now
flash[:success] = "Message sent"
redirect_to :back
else
flash[:danger] = "Message not sent. Please fill in all fields."
redirect_to :back
end
end
end
# message_mailer.rb
class MessageMailer < ApplicationMailer
def contact_me(message)
@body = message.body
# Note: my actual email is here, I just omitted it for this question
mail to: "<my-email>", from: message.email
end
end
#message.rb
类消息
包括ActiveModel::Model
属性访问者:姓名、电子邮件、正文
验证:姓名、:电子邮件、:正文、状态:true
结束
#消息\u controller.rb
类MessagesController
由于联系人表单位于视图的每个页面上,因此我在ApplicationController中执行了新操作:
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
include SessionsHelper
before_filter :get_message
def get_message
@message = Message.new
end
end
class ApplicationController
_footer.html.erb部分呈现联系人表单:
# shared/_contact_form.html.erb
<%= form_for @message, url: create_message_url do |f| %>
<%= notice %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.text_field :name, placeholder: 'name' %>
<%= f.email_field :email, placeholder: 'email' %>
<%= f.text_area :body, placeholder: 'body' %>
<%= f.submit 'Send' %>
<% end %>
#共享/_contact_form.html.erb
在config/application.rb
文件中添加以下smtp设置:
config.action_mailer.default_url_options = { :host => 'http://www.xxxx.com' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "xxxxxxxxx@gmail.com",
:password => "xxxxxxxx",
:authentication => "plain",
:enable_starttls_auto => true
}
您的smtp设置是什么?嗨,我不确定要将什么作为主机。我正在使用cloud9.host是指向您网站的链接。你的应用程序的cloud9链接是什么,请尝试添加它。添加行:config.action\u mailer.raise\u delivery\u errors=true并检查错误消息如果你在使用gmail发送电子邮件时遇到诸如Net::SMTPAuthenticationError之类的错误(谷歌应用程序帐户常见),访问您的gmail设置并启用不太安全的应用程序以使应用程序正常工作。好的,明白了。谢谢!!:)