[2001/02/05] るびきち
シンプルなメールクラス。
require 'mailread'
m = Mail.new('/var/mail/foo')
puts 'From: ' + m['From'],
'Subject: ' + m['Subject'],
'--',
m.body[0,5]
Mail.new(f)メールを解析する。 f はファイル名か IO オブジェクト。 このメソッドを実行した時点でヘッダと本文が切り分けられ、ヘッダの ハッシュ(ヘッダフィールド単位)と本文の配列(行単位)が作られる。
1ファイル複数メールの形式(Unix From 形式)に対応しており (この場合 open 済みの IO を渡す必要があることに注意)、 例えば以下のようにして各メールの Subject を表示できる
require 'mailread'
require 'nkf'
mailbox = File.open('/var/mail/arai')
until (m = Mail.new(mailbox)).header.empty?
puts NKF.nkf('-me', m['subject'])
end
Mail#headerヘッダを Hash で返す。 キーは 'From'、'Subject' などのフィールド名で、すべてのキーは String#capitalize されている。
値の末尾の改行は削除される。複数行に分かれている場合、間に改行を はさむ(継続行を表す空白は削除される)。MIME デコードなどを行いた い場合は NKF などを使用すること。
Mail#body本文を行単位の Array で返す。
Mail#[field]ヘッダの field の値を返す。 m.header[field.capitalize] と同じなので値取得の際は、フィー ルド名のアルファベットの大小を気にする必要はない。