大島です。

以下のように、 Net::SMTP#send_mail() の第1引数に ARGF を渡してメール
を送ると、先頭に "." を含む行がうまく処理されません。

% cat mail.txt
Test mail.
...test...
.test...
.
Test mail.
% ruby -v -r net/smtp -e 'Net::SMTP.start { |smtp| smtp.send_mail(ARGF, "ryu", "ryu") }' mail.txt
ruby 1.6.2 (2000-12-25) [mips-irix6.5]
/disk2/ryu/lib/ruby/1.6/net/protocol.rb:221:in `error!': 500 500 Command unrecognized: "." (Net::ProtoSyntaxError)
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:387:in `reply_must'
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:378:in `check_reply'
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:392:in `getok'
        from /disk2/ryu/lib/ruby/1.6/net/smtp.rb:257:in `quit'
        from /disk2/ryu/lib/ruby/1.6/net/smtp.rb:257:in `critical'
        from /disk2/ryu/lib/ruby/1.6/net/smtp.rb:257:in `quit'
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:181:in `do_finish'
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:159:in `finish'
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:142:in `start'
        from /disk2/ryu/lib/ruby/1.6/net/protocol.rb:77:in `start'
        from -e:1
% tail -5 /var/mail/ryu

Test mail.
..test...
.test...


Net::Protocol#adding() の以下の部分を修正すれば良いようです。


--- ruby-1.6.2/lib/net/protocol.rb.orig Sat Jan 13 00:06:22 2001 +++ ruby-1.6.2/lib/net/protocol.rb Sat Jan 13 00:07:01 2001 @@ -736,6 +736,7 @@ yield end end + yield end end
以上です。 大島 龍之介 ryu / jaist.ac.jp