# TMail::Mailクラス

## スーパークラス

Object

## クラスメソッド

new( port, strict = false )
  新しい Mail オブジェクトを返します。 引数はPortです。
  strict が真のときはヘッダをパースできなかったときに、 例外 ParseError を発生します。偽のときはエラーを無視します。
loadfrom( filename )
  新しい Mail オブジェクトを返します。引数 filename は mh などのように、 メール一通がファイルひとつに対応するファイルの名前でなければいけません。 UNIX mbox のような形式は単独では対応していないので、 別途ローダーを使ってください。
boundary
  新しいバウンダリを作成して返します。
msgid
  新しいMessage-IDを作成して返します。 ホスト名が取得できれば'<ランダム文字列@ホスト名>'の形式で作成します。 取得できないときはかわりに'tmail.on.ruby'を使います。
msgid?( str )
  文字列 str が正しいメッセージ ID 形式かどうかを返します。
zonestr2i( str )
  タイムゾーンを表す文字列 str を整数に変換します。単位は分です。
time2str( time )
  Time オブジェクトを RFC822 形式の文字列に変換します。
quote( str )
  文字列 str がメールヘッダで特殊な意味を持つとき、「"」でクオートします。 そうでないときは str をそのまま返します。

## メソッド

body_port
  TMail が本文を保存しているポートを返します。

  ただし、ここに書きこんでも実際のメールは変更されません。実際に変更するためには このポートに書きこんだ後 write_back メソッドを呼ぶ必要があります。

each
  body_port.each と同じです。
body
preamble
  メールボディ(本文)全てを文字列で返します。 MIMEマルチパートメールのときはpreambleに相当します。
parts
  メールがMIMEマルチパートメールの時、 各パートが TMail::Mail の配列として格納されています。 マルチパートメールでないときは空の配列です。
  この配列を変更しても実際のメールには反映されません。 反映させるには write_back を呼びます。
epilogue, epilogue=
  MIMEマルチパートメールでの epilogue に相当する文字列です。 通常のメールのときは空文字列がはいっています。
  この文字列を変更しても実際のメールには反映されません。 反映させるには write_back を呼びます。
multipart?
  メールがMIMEマルチパートのとき true。 このメソッドは Content-Type ヘッダの内容で真偽を判断します。
encoded( eol = "\n", charset = 'j', ret = '', sep = '' )
  適宜エンコードを行いつつメールを ret に書きこみます。 その際、ヘッダの行末コードを eol に、 ヘッダ内のエンコード前の日本語の文字コードを charset にセットし、 ヘッダと本文の間に文字列 sep をはさみます(たとえば Mh 形式なら'----')。
  このメソッドは 0.7 までは to_s と呼ばれていたものですが、 今後は encoded を推奨します。 将来のバージョンでは to_s は decoded の別名になります。
decoded( eol = "\n", charset = 'e', ret = '', sep = '' )
  メールを文字列に変換します。 ヘッダがデコードされたものになること以外は encoded と同じです。
  0.7 まではこのメソッドは inspect と呼ばれていましたが、 今後は decoded を使うことを勧めます。 将来のバージョンでは inspect はまったく違う意味になります。
to( default = '' )
  Toヘッダの一番最初のアドレスを返します。 Toが存在しないときはdefaultを返します。
to=( str )
  To ヘッダにに str をセットします。
from( default = '' )
  From の一番最初のアドレスを返します。 From が存在しないときは default を返します。
from_phrase( default = '' )
  From の一番最初のアドレスの phrase 部分を返します。 From が存在しないときは default を返します。
from=( str )
  From に str を使います。
subject( default = '' )
  Subject を返します。Subject ヘッダがないときは default を返します。
subject=( str )
  Subject ヘッダを str にセットします。
msgid( default = '' )
  メッセージID を返します。
msgid=( str )
  メッセージID に str をセットします。
maintype( default = nil )
  メール内容のメインタイプを返します。
subtype( default = nil )
  メール内容のサブタイプを返します。
charset( default = nil )
  charset が設定されていればそれを返します。
charset=( str )
  charset を str に設定します。
set_contenttype( main, sub, params = nil )
  コンテントタイプを main/sub; param ; param ; ... のように設定します。 params は Hash です。
encoding( default = nil )
  転送用エンコーディングを返します。
encoding=( str )
  転送用エンコーディングを設定します。
each_dest{|addr| ....}
  全ての宛先に対するくりかえし。
clear
  ヘッダを全て消去します。
keys
  ヘッダ名の配列を返します。
self[ key ]
  ヘッダ名からヘッダオブジェクトを返します。
self[ key ]= val
  keyヘッダの内容としてvalヘッダオブジェクトを使います。
delete( key )
  keyヘッダを消します。
delete_if{|key, val| ..... }
  ヘッダ名とヘッダを与えてブロックを評価し、真ならその関連づけを消します。
each_header{|name, field| ... }
each_pair{|name, field| ... }
  全てのヘッダ名とヘッダオブジェクトに対するくりかえし。
each_header_name{|header_name| .....}
  全てのヘッダ名に対するくりかえし。
each_field{|field| ... }
each_value{|field| ... }
  全てのヘッダオブジェクトに対するくりかえし。
fetch( key, default_body )
fetch( key ){ ... }
  keyヘッダに対応するヘッダオブジェクトを返します。配列 TMail::Mail::USE_ARRAY に 名前が設定されているヘッダに対しては('Received'など)、ヘッダオブジェクトの 配列が返ります。keyヘッダが存在しない場合はdefault_bodyに与えられた文字列を ヘッダボディとして登録したうえでそのヘッダオブジェクトを返します。 default_bodyが省略され、ブロックが与えられたときは、そのブロックを評価した結果を default_bodyとして使います。
has_key?( name )
include?( name )
key?( name )
  name ヘッダがあれば真。
has_value?( field )
value?( field )
  field ヘッダオブジェクトがあれば真。
indexes( *keys )
indices( *keys )
  全てのkeysについてfetchした結果の配列を返します。
store( fname, fbody )
  fname ヘッダを fbody に設定します。fbody は文字列、HeaderField オブジェクトです。 Received: など一部のヘッダに対してはさらにその配列も与えることができます。
values
  登録されている全てのヘッダオブジェクトの配列を返します。

Copyright (c) 1999,2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>