Tôi đang cố gửi email từ chương trình Ruby. Máy chủ smtp là một máy chủ Exchange 2007 yêu cầu tôi đăng nhập để gửi email.Gửi email từ chương trình Ruby với TLS
#!/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
Khi tôi chạy điều này, tôi nhận được lỗi sau.
/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'
Tôi không thể tìm thấy bất kỳ điều gì trong số Ruby api for Net::SMTP tham chiếu lệnh TLS hoặc STARTTLS.
EDIT: Tải xuống smtp-tls.rb, mã không thay đổi nhiều nhưng dưới đây là những gì tôi phải làm việc.
#!/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', 587, 'test.com', 'username', 'passwd', :login) do |smtp|
smtp.send_message msgstr, '[email protected]', ['[email protected]']
end
EDIT: Làm việc với ruby 1.8.6
Câu trả lời được chấp nhận không chính xác (hoặc ít nhất, không còn nữa). –