使用gmail未到达的来自rails 3中的设备的确认电子邮件

时间:2010-09-25 17:05:40

标签: ruby-on-rails-3 gmail ssl devise

我已经设置了以下内容。

----------------------
config/environments/development.rb
----------------------
 29   ActionMailer::Base.delivery_method = :smtp
 30   ActionMailer::Base.perform_deliveries = true
 31   ActionMailer::Base.raise_delivery_errors = true
 32  
 33   ActionMailer::Base.smtp_settings = {
 34     :enable_starttls_auto => true,  #this is the important stuff!
 35     :address        => 'smtp.gmail.com',
 36     :port           => 587,
 37     :domain         => 'foo.com',
 38     :authentication => :plain,
 39     :user_name      => '---@---.---',
 40     :password       => '---'
 41   }

然而,当设计发送确认电子邮件时,webbrick打印出来 日志中的电子邮件没有错误,但电子邮件不会结束 在我的收件箱或垃圾邮件收件箱中。

有什么想法吗?

编辑:

I now get

    Net::SMTPAuthenticationError (530 5.7.0 Must issue a STARTTLS command first. x13sm2646038bki.0

):

我找到了

----------------------
config/environments/development.rb
----------------------
 17   # Don't care if the mailer can't send
 18   config.action_mailer.raise_delivery_errors = false

已在配置文件中设置得更高。然而,这是关于发出STARTTLS命令的呢?

解决方案:

----------------------
config/environments/development.rb
----------------------
 26   require 'tlsmail' #key but not always described
 27   Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
 28  
 29   ActionMailer::Base.delivery_method = :smtp
 30   ActionMailer::Base.perform_deliveries = true
 31   ActionMailer::Base.raise_delivery_errors = true
 32  
 33   ActionMailer::Base.smtp_settings = {
 34     :enable_starttls_auto => true,  #this is the important stuff!
 35     :address        => 'smtp.gmail.com',
 36     :port           => 587,
 37     :domain         => 'xtargets.com',
 38     :authentication => :plain,
 39     :user_name      => '-------',
 40     :password       => '-------'
 41   }
 42  

布拉德

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题;在我的情况下是由于一个错误(Net :: SMTP不怎么说TLS,这是gmail所要求的),我解释了它here

答案 1 :(得分:0)

您可以将额外参数传递给smtp_settings,而不是全局关闭SSL证书验证:

config.action_mailer.smtp_settings = {
  :address              => 'smtp.example.com',
  :port                 => '25',
  :domain               => 'example.com',
  :user_name            => 'someone@example.com',
  :password             => 'secret',
  :authentication       => 'plain',
  :enable_starttls_auto => true,
  :openssl_verify_mode  => OpenSSL::SSL::VERIFY_NONE,
}

您可能还需要require 'openssl'才能获得该常量。

如果您在Pony哈希中包含:openssl_verify_mode,此解决方案也适用于:via_options