Sac*_*ngh 2 ruby email rubygems ruby-on-rails ruby-on-rails-3.2
我正在编写一个 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: true
Run Code Online (Sandbox Code Playgroud)
当我尝试使用上述 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'
Run Code Online (Sandbox Code Playgroud)
我尝试搜索这个错误并发现
SASL LOGIN 身份验证失败:在 Ubuntu 12.10 上使用 Postfix 和 Dovecot 的 Rails 上的身份验证机制无效
但这没有帮助。
为什么使用MD5?如果您使用的是 TLS (SSL),则无需执行此操作,因为连接本身已加密,甚至 Base64 编码的密码也是安全的。
当您连接到服务器时,它会通告允许的身份验证类型。对于 Google Gmail,标题如下所示:
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 PLAIN-CLIENTTOKEN
Run Code Online (Sandbox Code Playgroud)
CRAM-MD5不支持。其他的都是。
Google 可能放弃了 MD5,因为考虑到 MD5 很容易被破解,这种方法几乎无法提供安全性。
| 归档时间: |
|
| 查看次数: |
4592 次 |
| 最近记录: |