Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails联系人表单不发送电子邮件_Ruby On Rails - Fatal编程技术网

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设置并启用不太安全的应用程序以使应用程序正常工作。好的,明白了。谢谢!!:)