Ruby on rails ContatosController#create中的Rails:Net::OpenTimeout
我不知道ContatosController#create中出现此错误的原因。我在app/controllers/contatos_controller.rb中有以下代码: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
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
}