我已经设置了以下内容。
----------------------
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
布拉德
答案 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
。