使用TLS从Ruby程序发送电子邮件

我正在尝试从 Ruby程序发送电子邮件. smtp服务器是Exchange 2007服务器,需要我登录才能发送电子邮件.
#!/usr/bin/ruby

require 'rubygems'
require 'net/smtp'

msgstr = "Test email."

smtp = Net::SMTP.start('smtp.server.com',587,'mail.server.com','username','password',:login) do |smtp|
    smtp.send_message msgstr,'[email protected]','[email protected]'
end

当我运行这个时,我得到以下错误.

/usr/lib/ruby/1.8/net/smtp.rb:948:in `check_auth_continue': 
530 5.7.0 Must issue a STARTTLS command first (Net::SMTPAuthenticationError)
    from /usr/lib/ruby/1.8/net/smtp.rb:740:in `auth_login'
    from /usr/lib/ruby/1.8/net/smtp.rb:921:in `critical'
    from /usr/lib/ruby/1.8/net/smtp.rb:739:in `auth_login'
    from /usr/lib/ruby/1.8/net/smtp.rb:725:in `send'
    from /usr/lib/ruby/1.8/net/smtp.rb:725:in `authenticate'
    from /usr/lib/ruby/1.8/net/smtp.rb:566:in `do_start'
    from /usr/lib/ruby/1.8/net/smtp.rb:525:in `start'
    from /usr/lib/ruby/1.8/net/smtp.rb:463:in `start'

我在Ruby api for Net::SMTP引用TLS或STARTTLS命令中找不到任何内容.

编辑:
下载smtp-tls.rb,代码没有太大变化,但这是我的工作.

#!/usr/bin/ruby

require 'rubygems'
require 'net/smtp'
require 'smtp-tls'

msgstr = <<MESSAGE_END
From: me <[email protected]>
To: you <[email protected]>
Subject: e-mail test

body of email

MESSAGE_END

smtp = Net::SMTP.start('smtp.test.com','test.com','passwd','[email protected]',['[email protected]']
end

编辑:与ruby 1.8.6一起使用

解决方法

Net :: SMTP看起来不支持startTLS加密.我确实在github上找到了一个项目,它有代码来处理这个问题.

smtp-tls

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...