Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 未设置ActionMailer值_Ruby On Rails_Ruby On Rails 4_Actionmailer - Fatal编程技术网

Ruby on rails 未设置ActionMailer值

Ruby on rails 未设置ActionMailer值,ruby-on-rails,ruby-on-rails-4,actionmailer,Ruby On Rails,Ruby On Rails 4,Actionmailer,我正在尝试使用以下配置发送电子邮件 config.action_mailer.default_url_options = { :host => 'lototribe.com' } config.action_mailer.delivery_method = :smtp config.action_mailer.raise_delivery_errors = true ActionMailer::Base.delivery_method = :smtp ActionMailer::Bas

我正在尝试使用以下配置发送电子邮件

config.action_mailer.default_url_options = { :host => 'lototribe.com' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.raise_delivery_errors = true
ActionMailer::Base.delivery_method = :smtp  
ActionMailer::Base.smtp_settings = {            
:address              => "smtp.zoho.com", 
:port                 => '465',
:domain               => 'lototribe.com',               
:user_name            => 'no-reply@lototribe.com',
:password             => 'password',         
:authentication       => :plain,
:ssl                  => true,
:tls                  => true,
:enable_starttls_auto => true    
}
正在抛出Net::ReadTimeout。Om正在检查我找到的堆栈跟踪

  smtp.start(settings[:domain], settings[:user_name], settings[:password], settings[:authentication]) do |smtp_obj|
    response = smtp_obj.sendmail(message, smtp_from, smtp_to)
  end
在哪里

  >> settings[:domain]
  => "localhost.localdomain"
  >> settings[:user_name]
  => nil
  >> settings[:password]
  => nil
  >> settings[:authentication]
  => nil
这是从未预料到的价值。
有人能说出这些值设置错误的原因吗?

尝试设置。执行“true”并将ActionMailer::Base声明更改为config.ActionMailer,如下所示:

  config.action_mailer.raise_delivery_errors = false
  host = ENV['EMAIL_DOMAIN']
  config.action_mailer.default_url_options = { host: host}
  config.action_mailer.perform_deliveries = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "smtp.zoho.com",
    :port => 587,
    :user_name => ENV["USERNAME"],
    :password => ENV["PASSWORD"],
    :authentication => :plain,
    :enable_starttls_auto => true
  }
我喜欢做的另一件事是在发送电子邮件时捕捉任何错误,因为发送电子邮件几乎总是会导致某种时间类型的错误。我拯救它,以便即使某些邮件失败,也能发送电子邮件:

MyMailer.send_email(subject: subject, user: user, message: message).deliver
      rescue Net::OpenTimeout, Net::ReadTimeout, Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => e
        Rails.logger.error e.message
      end