# TMail モジュール

## モジュールメソッド

new_boundary
boundary
  新しいバウンダリを作成して返します。
new_msgid( fqdn = Socket.gethostname )
msgid
  新しいメッセージ ID を作成して返します。 引数 fqdn が省略された場合はローカルホストの名前を使います。 一方 fqdn を指定する場合はダイヤルアップであるなどの事情により ホストの名前を変える必要があるのだとみなし、それに '.tmail' を つけたドメインを使用します。これは「本物の」ドメインで作成される メッセージ ID との重複を避けるためです。
msgid?( str )
  文字列 str が正しいメッセージ ID 形式かどうかを返します。
zonestr2i( str )
  タイムゾーンを表す文字列 str を整数に変換します。単位は分です。
time2str( time )
  Time オブジェクトを RFC822 形式の文字列に変換します。
quote( str )
  文字列 str がメールヘッダで特殊な意味を持つとき、「"」でクオートします。 そうでないときは str をそのまま返します。
quote_phrase( str )
  文字列 str がメールヘッダで特殊な意味を持つとき、「"」でクオートします。 そうでないときは str をそのまま返します。phrase 専用です。
encoded?( str )
  文字列 str にヘッダ用の MIME エンコードがなされていると思われる時、真。

# TMail::Mailクラス

## スーパークラス

Object

## クラスメソッド

new( port = nil, strict = false )
  Mail オブジェクトを作成します。port はPort オブジェクトで、省略時には StringPort.new('') を使います。

  strict が真のときはヘッダのパースに失敗すると例外 ParseError を 発生します。偽のときはエラーを無視します。

load( filename )
  ファイル filename からメールをロードして Mail オブジェクトを作成します。 ロードするファイルは mh のメールのようにメール一通がファイルひとつに 対応していなければいけません。

  UNIX mbox のような形式は単独では対応して いません。別途ローダーを使ってください。

parse( str )
  文字列 str をパースして Mail オブジェクトを作成します。str はメール 一通分でなければいけません。

## メソッド

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

  ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。 実際に変更するためにはこのポートに書きこんだ後 Mail#write_back を呼ぶ 必要があります。

each
  body_port.each と同じです。
body
preamble
  メールボディ(本文)全てを文字列で返します。 MIMEマルチパートメールのときはpreambleに相当します。
parts
  メールがMIMEマルチパートメールの時、各パートが TMail::Mail の配列として 格納されています。マルチパートメールでないときは空の配列です。

  ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。 実際に変更するためにはこのポートに書きこんだ後 Mail#write_back を呼ぶ 必要があります。

epilogue, epilogue=
  MIME マルチパートメールでの epilogue に相当する文字列です。 通常のメールのときは空文字列がはいっています。

  ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。 実際に変更するためにはこのポートに書きこんだ後 Mail#write_back を呼ぶ 必要があります。

multipart?
  メールが MIME マルチパートのとき true。 このメソッドは Content-Type ヘッダの内容で真偽を判断します。
encoded( eol = "\n", charset = 'j', dest = '', sep = '' )
  適宜エンコードを行いつつメールを dest に書きこみます。その際、ヘッダの 行末コードを eol に、ヘッダ内のエンコード前の日本語の文字コードを charset にセットし、ヘッダと本文の間に文字列 sep をはさみます。

  0.9 からの to_s はこのメソッドとは違うはたらきをします。

decoded( eol = "\n", charset = 'e', ret = '', sep = '' )
  メールを文字列に変換します。ヘッダがデコードされたものになること以外は encoded と同じです。0.9 以降 to_s はこのメソッドの別名になりました。
inspect
  以前は decoded の別名でしたが 0.9 からは `"#<TMail::Mail port= のような簡潔な文字列化を行います。`
date( default = nil ), date=( time )
  Date ヘッダで表現される時刻(Time オブジェクト)です。
to( default = nil ), to=( str )
  To ヘッダの一番最初のアドレスの文字列 (self['to'].addrs[0].address) です。 To が存在しないときは default を返します。
to_addrs( default = nil ), to_addrs=( array )
  To ヘッダと対応するアドレスの Address オブジェクト、の配列 (tmail['to'].addrs) を返します。存在しない時は default を返します。
from_address( default = nil ), from_address=( str )
from( default = nil ), from=( str )
  From の一番最初のアドレスです。 From が存在しないときは default を返します。
from_phrase( default = nil )
  From の一番最初のアドレスの phrase 部分を返します。 From が存在しないときは default を返します。
from_addrs( default = nil ), from_addrs=( array )
  From に対応するアドレスの Address オブジェクト、の配列を返します。 存在しないときは default を返します。
subject( default = '' ), subject=( str )
  Subject です。 Subject ヘッダがないときは default を返します。
msgid( default = '' ), msgid=( str )
  メッセージID です。
mime_version( default = nil ), mime_version=( m, opt = nil )
  MIME バージョンを '1.0' のような文字列で返します。 セットする時は、'1.0' のような文字列か major と minor 二つの整数を使ってください。
main_type( default = nil )
  メール本体のメインタイプを返します。
sub_type( default = nil )
  メール本体のサブタイプを返します。
charset( default = nil ), charset=( str )
  Content-Type の charset パラメータです。 セットする時は main_type が 'text' でなければならないことに気をつけてください。
set_content_type( main, sub, params = nil )
  コンテントタイプを main/sub; param ; param ; ... のように設定します。 params は Hash です。
encoding( default = nil ), encoding=( str )
  転送時エンコーディングの方式です。主に 7bit、8bit、binary などがあります。
destinations
  To、Cc、Bcc のアドレス(addr-spec 文字列)すべてを配列で返します。
each_dest {|addr_spec| ....}
  全ての宛先(addr-spec 文字列)に対するくりかえし。
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 {|name| .... }
each_key {|name| .... }
  全てのヘッダ名に対するくりかえし。
each_field {|field| ... }
each_value {|field| ... }
  全てのヘッダオブジェクトに対するくりかえし。
orderd_each {|name, field| .... }
  ヘッダの順序指定付きの each_header です。最初に指定したものが指定した 順番で並び、その他のヘッダがランダムに続きます。順序は文字列の配列 TMail::Mail::FIELD_ORDER で設定してください(詳細はソースコードを参照)。 TMail#encoded/decoded からも使われます。
self[ key ]
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した結果の配列を返します。
self[ fname ] = fbody
store( fname, fbody )
  fname ヘッダを fbody に設定します。fbody は文字列か HeaderField オブジェクトです。 Received: など一部のヘッダに対してはさらにその配列も与えることができます。
values
  登録されている全てのヘッダオブジェクトの配列を返します。

Copyright (c) 1998-2001 Minero Aoki <aamine@dp.u-netsurf.ne.jp>