Ruby on rails 无法使用cram_md5身份验证通过SSL上的SMTP发送电子邮件
我正在编写一个Ruby脚本来使用“mail”gem发送电子邮件 以下是我在本地计算机上的SMTP设置:Ruby on rails 无法使用cram_md5身份验证通过SSL上的SMTP发送电子邮件,ruby-on-rails,ruby,email,ruby-on-rails-3.2,rubygems,Ruby On Rails,Ruby,Email,Ruby On Rails 3.2,Rubygems,我正在编写一个Ruby脚本来使用“mail”gem发送电子邮件 以下是我在本地计算机上的SMTP设置: mailer_options: address: smtp.gmail.com port: 465 domain: gmail.com user_name: example@gmail.com password: example_password authentication: :cram_md5 enable_starttls_auto: true ssl:
mailer_options:
address: smtp.gmail.com
port: 465
domain: gmail.com
user_name: example@gmail.com
password: example_password
authentication: :cram_md5
enable_starttls_auto: true
ssl: true
当我尝试使用上述SMTP设置发送电子邮件时,出现以下异常:
/opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:968:in `check_auth_continue': 504 5.7.4 Unrecognized Authentication Type ka3sm12016635pbc.32 - gsmtp (Net::SMTPSyntaxError)from /opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:758:in `block in auth_cram_md5from /opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:941:in `critical'
from /opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:756:in `auth_cram_md5'
from /opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:731:in `authenticate'
from /opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:566:in `do_start'
from /opt/rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/smtp.rb:519:in `start'
from /opt/rtpg/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
from /opt/rtpg/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery'
from /opt/rtpg/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/message.rb:234:in `deliver'
from /opt/rtpg/vendor/bundle/ruby/2.0.0/gems/mail-2.5.4/lib/mail/mail.rb:140:in `deliver'
我尝试搜索此错误并发现
但是它没有帮助。为什么要使用MD5?如果您使用的是TLS(SSL),则无需执行此操作,因为连接本身是加密的,甚至Base64编码的密码也是安全的 当您连接到服务器时,它将公布允许的身份验证类型。Google Gmail的标题如下所示:
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN
CRAM-MD5
不受支持。其他的都是
谷歌可能放弃了MD5,因为考虑到MD5很容易被破解,这种方法提供的安全性很低。你将无法使用
cram\u MD5
对Gmail进行身份验证。以下是使用Gmail的配置示例:
Mail.defaults do
delivery_method :smtp, {
:address => 'smtp.gmail.com',
:port => '587',
:user_name => ENV['GMAIL_SMTP_USER'],
:password => ENV['GMAIL_SMTP_PASSWORD'],
:authentication => :plain,
:enable_starttls_auto => true
}
end
资料来源: