我有一个运行 Rails 4.2.0、Devise 3.4.1 和最新版本的 postmark-rails gem 的应用程序。起初发送重置密码邮件似乎工作正常,但我从未收到邮件。
然后我改变了config.action_mailer.raise_delivery_errors = true
(它是错误的),它揭示了以下错误:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
请注意,这是在我的开发机器上。
我已经按照此处的描述实现了我的邮件程序,但以下是相关位:
在 /app/mailers/user_mailer.rb:
class UserMailer < ActionMailer::Base
include Devise::Mailers::Helpers
default from: "xxx@xxx.xxx" # <- From address replaced by x's
def confirmation_instructions(record)
devise_mail(record, :confirmation_instructions)
end
def reset_password_instructions(record,token,options)
devise_mail(record, :reset_password_instructions)
end
def unlock_instructions(record)
devise_mail(record, :unlock_instructions)
end
end
然后在 development.rb 中:
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.perform_deliveries = true
在 /initializers/devise.rb 中:
config.mailer = 'UserMailer'
application.rb:(我的应用程序可以使用这两个 ENV 变量)
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_key => ENV['POSTMARK_API_KEY'], :api_token => ENV['POSTMARK_API_TOKEN'] }
宝石文件:
gem 'postmark-rails'
gem 'mail'
我发现了很多对这个 SSL 错误的引用,但找不到任何我认为适用于此的内容。
请帮忙?
更新: 从网络上的各种资源,主要是这个,我怀疑我的问题的根源可能是我使用的是旧版本的 OpenSSL,它与当前版本的 Windows 版 GIT 一起提供。我的应用程序在部署到 Heroku 时可以工作。