Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 ContatosController#create中的Rails:Net::OpenTimeout_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails ContatosController#create中的Rails:Net::OpenTimeout

Ruby on rails ContatosController#create中的Rails:Net::OpenTimeout,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我不知道ContatosController#create中出现此错误的原因。我在app/controllers/contatos_controller.rb中有以下代码: def create @contato = Contato.new(contato_params) respond_to do |format| if @contato.save ContatoMailer.mensagem(@contato).deliver

我不知道ContatosController#create中出现此错误的原因。我在app/controllers/contatos_controller.rb中有以下代码:

  def create
    @contato = Contato.new(contato_params)

    respond_to do |format|
      if @contato.save
        ContatoMailer.mensagem(@contato).deliver
        format.html { redirect_to contatos_path, notice: 'Obrigado por enviar sua mensagem! Em breve, responderemos.' }
        format.json { render :show, status: :created, location: @contato }
      else
        format.html { render :new }
        format.json { render json: @contato.errors, status: :unprocessable_entity }
      end
    end
  end
在app/mailers/contato_mailer.rb中:

class ContatoMailer < ActionMailer::Base
    default from: "myemail@gmail.com"

    def mensagem(contato)
        mail(:to => "myemail@gmail.com", :subject => "Subject")            
    end
end
当然,还有app/views/contato_mailer/mensagem.html.erb中的模板

当我从表单提交新消息时,Rails返回“执行已过期”,重点是“ContatoMailer.mensage(@contato.deliver)”


请问,我做错了什么?

尝试将
域:
键更改为指向
“gmail”
,这样它应该是:

ActionMailer::Base.smtp_settings = {
  :address              => 'smtp.gmail.com',
  :port                 => 587,
  :domain               => 'gmail.com',
  :user_name            => 'myemail@gmail.com',
  :password             => 'secret',
  :authentication       => :plain,
  :enable_starttls_auto => true,
  :ssl                  => true
}
我认为它正在超时,因为它不知道domain.com与您的设置相对应

ActionMailer::Base.smtp_settings = {
  :address              => 'smtp.gmail.com',
  :port                 => 587,
  :domain               => 'gmail.com',
  :user_name            => 'myemail@gmail.com',
  :password             => 'secret',
  :authentication       => :plain,
  :enable_starttls_auto => true,
  :ssl                  => true
}