Ruby 3.0.0 リファレンスマニュアル > ライブラリ一覧 > net/smtpライブラリ > Net::SMTPクラス > open_message_stream

instance method Net::SMTP#open_message_stream

open_message_stream(from_addr, *to_addrs) {|f| .... } -> ()[permalink][rdoc]
ready(from_addr, *to_addrs) {|f| .... } -> ()

メール書き込みの準備をし、書き込み先のストリームオブジェクトをブロックに渡します。ブロック終了後、書きこんだ結果が送られます。

渡されるストリームオブジェクトは以下のメソッドを持っています。

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

require 'net/smtp'

Net::SMTP.start('smtp.example.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個)
[EXCEPTION] IOError:
すでにセッションが終了している場合に発生します
[EXCEPTION] TimeoutError:
接続がタイムアウトした場合に発生します
[EXCEPTION] Net::SMTPServerBusy:
SMTPエラーコード420,450の場合に発生します
[EXCEPTION] Net::SMTPSyntaxError:
SMTPエラーコード500の場合に発生します
[EXCEPTION] Net::SMTPFatalError:
SMTPエラーコード5xxの場合に発生します
[EXCEPTION] Net::SMTPAuthenticationError:
送信に必要な認証を行っていなかった場合に発生します
[EXCEPTION] Net::SMTPUnknownError:
SMTPエラーコードがプロトコル上不正な場合に発生します

[SEE_ALSO] Net::SMTP#send_message