names=open_message_stream,ready
visibility=public
kind=defined

--- open_message_stream(from_addr, *to_addrs) {|f| .... } -> ()
--- ready(from_addr, *to_addrs) {|f| .... } -> ()
メール書き込みの準備をし、書き込み先のストリームオブジェクトを
ブロックに渡します。ブロック終了後、書きこんだ結果が
送られます。

渡されるストリームオブジェクトは以下のメソッドを持っています。
  * puts(str = '') strを出力して CR LFを出力
  * print(str)     strを出力
  * printf(fmt, *args)   sprintf(fmt,*args) を出力
  * write(str)::         str を出力して書き込んだバイト数を返す
  * <<(str)::            str を出力してストリームオブジェクト自身を返す

from_domain は送り主のメールアドレス ('...@...'のかたち) 、
to_addrs には送信先メールアドレスを文字列で渡します。

  require 'net/smtp'

  Net::SMTP.start('smtp.exmaple.com', 25) {|smtp|
    smtp.open_message_stream('from@example.com', 'to@example.net') {|f|
      f.puts 'From: from@example.com'
      f.puts 'To: to@example.net'
      f.puts 'Subject: test mail'
      f.puts
      f.puts 'This is test mail.'
    }
  }

ready は obsolete です。

@param from_addr 送信元のメールアドレス
@param to_addrs 送信先のメールアドレス(複数可、少なくとも1個)

@raise IOError すでにセッションが終了している場合に発生します
@raise TimeoutError 接続がタイムアウトした場合に発生します
@raise Net::SMTPServerBusy SMTPエラーコード420,450の場合に発生します
@raise Net::SMTPSyntaxError SMTPエラーコード500の場合に発生します
@raise Net::SMTPFatalError SMTPエラーコード5xxの場合に発生します
@raise Net::SMTPAuthenticationError 送信に必要な認証を行っていなかった場合に発生します
@raise Net::SMTPUnknownError SMTPエラーコードがプロトコル上不正な場合に発生します

@see [[m:Net::SMTP#send_message]]


