Rails 3 ActionMailer错误 - 主机名与服务器证书不匹配

25

我正在为我的Rails 3应用程序设置SMTP。

这个配置是有效的。

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {  
  :address              => "smtp.gmail.com",  
  :port                 => 587,  
  :domain               => "mydomain.com",  
  :user_name            => "<username>",  
  :password             => "<password>",  
  :authentication       => "plain",  
  :enable_starttls_auto => true  
}

但是这个配置不起作用。它会提示"主机名与服务器证书不匹配"

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {  
  :address              => "some_other_server.com",  
  :port                 => 587,  
  :domain               => "mydomain.com",  
  :user_name            => "<username>",  
  :password             => "<password>",  
  :authentication       => "plain",  
  :enable_starttls_auto => true  
}

奇怪的是,在Rails 2.3.8中相同的配置可以工作。 (:tls => true)

出了什么问题?

3个回答

53

在您的ActionMailer smtp设置中尝试以下内容:

:openssl_verify_mode => 'none'

它为您提供了安全的连接,但不进行验证。 对于生产应用程序可能不是最佳选择,但对我来说可以使用。


1
这实际上是一个生产应用的不好的想法。 - pconcepcion
A: 你好,我的门锁有问题; B: 尝试拆下门或者保持它开着; A: 现在完美解决了,谢谢。 - res

17

我曾经遇到完全相同的问题。通过更改ActionMailer :: Base.smtp_settings解决了它:

:enable_starttls_auto => true  

:enable_starttls_auto => false

我必须确保:user_name的值包含@domain.com


不幸的是,这对我不起作用。它会给出另一个错误,例如“您必须先启动TLS”之类的内容。 - Sam Kong
哇,我无法想象一个更模糊的回答。你没有说在哪里放这些语句,甚至没有文件名。 - erapert
这个答案正是我需要的,可以让我从 Network Solutions 域名的 SMTP 服务器发送邮件。虽然被采纳的答案也能用,但这个答案似乎更适合长期解决方案。 - Ken W
使用SendGrid时,无需在:user_name中包含@domain.com。 - MCB

0
你的邮件发送器(位于app/mailers)中是否提供了默认地址?我记得上次遇到这个问题时,我的邮件发送器中的主机名与我的smtp设置中的主机名不匹配。

不,发件人中没有默认地址。 - Sam Kong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接