7

我已经设置了以下内容。

----------------------
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  

布拉德

4

2 回答 2

5

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

于 2010-09-25T17:18:23.647 回答
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哈希中,此解决方案也适用于 。

于 2011-03-26T15:02:45.070 回答