Ruby-mswin32 (ja)からダウンロードさせてもらったmswin32版のrubyを使ってnet/smtpのメール送信をしてみたのだが、うまくいったりいかなかったり。
require 'net/smtp'
Net::SMTP.start('localhost.domain.co.jp') {|smtp|}
Win2kは正常終了するのもあったけど、エラーすら返してくれないのもあった。WinNTは以下のようなエラーが返ってきた。
Exception `Timeout::Error' at C:/ruby-1.8/lib/ruby/1.8/timeout.rb:54 - execution expired
Exception `Timeout::Error' at C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:689 - execution expired
C:/ruby-1.8/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error)
from C:/ruby-1.8/lib/ruby/1.8/timeout.rb:56:in `timeout'
from C:/ruby-1.8/lib/ruby/1.8/timeout.rb:76:in `timeout'
from C:/ruby-1.8/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill'
from C:/ruby-1.8/lib/ruby/1.8/net/protocol.rb:116:in `readuntil'
from C:/ruby-1.8/lib/ruby/1.8/net/protocol.rb:126:in `readline'
from C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:664:in `recv_response'
from C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:396:in `do_start'
from C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:686:in `critical'
from C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:396:in `do_start'
from C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:378:in `start'
from C:/ruby-1.8/lib/ruby/1.8/net/smtp.rb:316:in `start'
from test.rb:20
デバッグモードで追っかけたら表示の通りnet/smtp.rb:664の@socket.readlineで「ちゅどーん!」ってのは分かったけど、自分にはそれしか分からなかった...
telnetコマンドでは正常に応答できるのにorz