session.rb リファレンス


Mail::Session

スーパークラス

Object

クラスメソッド

new( address = 'localhost', port = nil )

新しいSessionオブジェクトを生成します。addressはサーバーが動いているホストのアドレスで portは接続するTCPポートです。ただし、Sessionは抽象クラスなので、実体化してはいけません。 またSessionからクラスを派生させる場合は、以下を必ず実装してください。

TCPコネクションをはり、ソケットを生成するまでがSessionの仕事で、 プロトコル固有の処理はdo_logXXで行います。たとえばSMTPSessionでは do_start内でHELO(EHLO)コマンドをおくっています。
start( address = 'localhost', port = nil, *args )
start( address = 'localhost', port = nil, *args ){|session| .... }

Sessionオブジェクトを生成したうえでセッションを開始します。 ブロック付きで呼びだしたときはセッションオブジェクトをブロックに与えて評価し、 ブロックから抜けたら自動的にセッションを終了します。

メソッド

start( *args )

@socket に ProtocolSocket を、@proto に @proto_type で指定したソケット オブジェクトを生成し、プロトコルが開始したら private メソッド do_start を よびだします。また、すでにログイン中のときはなにもせずに false をかえします。
do_startではプロトコル特有の開始処理を行ないます。

finish

privateメソッド do_finish をよびだしてから、プロトコルを終了します。 do_finishの途中でエラーがおこっても強制的に回線を切断します。 また、ログインしていない時はなにもせずにfalseをかえします。
do_finishではプロトコル特有の終了処理を行ってください。

active?

ログイン中のとき、真をかえします。ログイン中というのは、TCPコネクション およびそのうえのアプリケーションプロトコルのセッションがつながっている 状態のことです。

定数

Version

ライブラリのバージョンです。文字列で、"1.0.3" のような形式で記入されています。


Mail::Protocol

スーパークラス

Object

クラスメソッド

new( socket )

ProtocolSocketをうけとって新しいProtocolオブジェクトを生成し、同時に プロトコルセッションを開始します。ただしこのクラスは抽象クラスなので 直接実体化してはいけません。

メソッド

quit

プロトコルを終了します。途中でエラーがおきても接続は強制的に切断します。

Mail::ProtocolSocket

スーパークラス

Object

クラスメソッド

new( address = 'localhost', port = nil )

新しいProtocolSocketオブジェクトを生成し、同時に、addressで示されるホストの port番ポートにTCP接続します。

メソッド

close

TCP接続を閉じます。

addr: String

接続先アドレス

ipaddr: String

接続先のIPアドレス

port: Integer

接続しているポート

closed?

すでにソケットがcloseされているとき真を返します。

write( src )

eachを使ってsrcから文字列を読みこみ、単独の"\r"および"\n"を"\r\n"に変換しながら その文字列を送ります。書きこんだバイト数を返します。

writebin( src )

eachを使ってsrcから文字列を読みこみ、順々に送信します。 書きこんだバイト数を返します。

writeline( str )

文字列strを書き込んだあと"\r\n"を書き込みます。write と違って文字列しか渡せません。 また、strは一切加工されません。

write_pendstr( src )

ピリオド終端の文字列(例:メールの本文)を書きこみます。 srcからeachを使って文字列を読みこみ、その行末コードを\r\nに変換し、行頭のピリオドを 二重にし、末尾が\r\n.\r\nになるようにして送信します。

read( len )

lenバイト読み込みます。読みこんだ文字列を返します。

readuntil( target )

目標文字列targetをみつけるまで読み込みます。読みこんだ文字列を返します。

readline

"\r\n"までをよみこみます。readuntil( "\r\n" )と同じです。読んだ文字列を返します。

read_pendstr

ピリオドで終端する文字列を読みこみます(例:メールの本文)。 行頭のピリオドと最終行は削除します。

read_pendlist
read_pendlist{|line| .... }

ピリオドで終端する文字列を読みこみます。read_pendstrと違うのは、行頭のピリオドを 見ないこと、結果を一行一要素の配列で返すこと、行末記号が消されることです。

ブロック付きで呼びだされたときは一行読みこむごとに結果をブロックに与えて評価します。 返り値は変わりません。


Author: Minero Aoki (aamine@dp.u-netsurf.ne.jp)