# HeaderFieldとその下位クラス

ヘッダフィールドを表現するクラスです。 ヘッダの種類によって対応するクラスが違い、 例えば To: ヘッダはTMail::MaddrH クラスで表されます。
すべてのクラスは TMail モジュールの中に定義されています。

ほとんどのヘッダは特性に実際のアクセスがあるまではヘッダの内容の解析をせず、 最初のアクセスでパースを行います。これによって実行速度とメモリをかなり 節約できているのですが、反面、パーズエラーがどこでおきるかわからない 危険性も含んでいます。
0.7.6 からは TMail::Mail.new の引数によってこのときの パースエラーを無視するようになりました。何もしないとパースエラーは 全て無視されるので、厳しい検査が必要なときは TMail::Mail.new( port, true ) のようにして生成してください。

## HeaderFieldクラス

### スーパークラス

Object

### クラスメソッド

new( fname, fbody )
  新しいヘッダフィールドを返します。 fnameはフィールド名、fbodyはフィールドボディです。 fnameによって、適切なクラスを生成します。

### メソッド

name
  フィールド名の複製を返します。
to_s( eol = "\n" )
  ヘッダ全体をエンコードした文字列を返します。 おりかえしが必要なときは eol を行末記号に使います。
inspect
  ヘッダ全体をデコードした文字列を返します。
body
  デコードしたヘッダボディを返します。

## StringHクラス

### スーパークラス

HeaderField

### 対応ヘッダ

- Subject:
- Comments:
- Content-Description
- X-*:

### メソッド

body, body=( str )
  フィールドボディです。

## StructHクラス

'structured' (構造化)ヘッダを表す抽象クラスです。実体化してはいけません。

### スーパークラス

HeaderField

### メソッド

comments
  コメント(かっこにかこまれている部分)の配列を返します。 ヘッダが文字列化されるとき、コメントはまとめてヘッダの最後に追加されます。 つまり、一度 TMail でパーズしてしまったヘッダオブジェクトからは 完全に元と同じ文字列は生成できないということです。 (ぼくはコメントは所詮消えゆく運命なのでこのへんは仕方ないと思っています。)

## UnknownHクラス

### スーパークラス

StructH

### 対応ヘッダ

明示的に対応するクラスがあるヘッダ以外の全てのヘッダ

### メソッド

body, body=( str )
  フィールドボディ。

## DateHクラス

### スーパークラス

StructH

### 対応するヘッダ

- Date:
- Resent-Date:

### クラスメソッド

DateH.t2s( time )
  ローカル時間のTimeオブジェクトから、適正な RFC822(RFC1123)形式の文字列表現 DDD, MMM DD YYYY HH:MM:SS [+/-]ZZZZ を返します。

### メソッド

date, date=( tim )
  Dateヘッダのdate-timeをTimeオブジェクトにしたもの。常にローカル時間です。

## SaddrHクラス

### スーパークラス

StructH

### 対応ヘッダ

- Return-Path:
- Sender:
- Resent-Sender:

### メソッド

addr, addr=( adr )
  TMail::Address または TMail::AddressGroup を返します。

## MaddrHクラス

### スーパークラス

StructH

### 対応ヘッダ

- To:
- Cc:
- Bcc:
- From:
- Reply-To:
- Resent-To:
- Resent-Cc:
- Resent-Bcc:
- Resent-From:
- Resent-Reply-To:

### メソッド

addrs
  Mbox または AddrGroupの配列です。 ユーザがそれ以外のオブジェクトを入れることもできますが 正常に動作することは期待しないでください。

## MsgidHクラス

### スーパークラス

StructH

### 対応ヘッダ

- Message-ID:
- Resent-Message-ID:
- Content-ID:

### クラスメソッド

MsgidH.msgid?( str )
  str が message-id 形式の文字列を含むときにはその部分の文字列を、 そうでないときは nil を返します。

### メソッド

msgid, msgid=( str )
  メッセージ ID 文字列。

## RefHクラス

### スーパークラス

StructH

### 対応ヘッダ

- References:
- In-Reply-To:

### メソッド

refs
  メッセージ ID と phrase のどちらかをランダムに含む配列。
each_msgid{|msgid| .... }
  メッセージ ID (に見える文字列)に対してだけ繰りかえします。
each_phrase{|phrase| .... }
  phrase に対してだけ繰りかえします。

## RecvHクラス

### スーパークラス

StructH

### 対応ヘッダ

- Received:

### メソッド

from, from=( domain )
  from に対応する文字列です。FQDN でなければいけません(チェックしない)。
by, by=( domain )
  by に対応する文字列です。FQDN でなければいけません(チェックしない)。
via, via=( atom )
  via に対応する文字列です(チェックしない)。
with
  with に対応する文字列の配列です。 プロトコルを表す文字列でなければいけません(チェックしない)。
msgid, msgid=( mid )
  id に対応する文字列です。普通、一単語です(チェックしない)。
for_, for_=( dom )
  for に対応する文字列です。単純に for でないことに注意してください。 for_domain、ford という別名もあります。
date, date=( dat )
  ヘッダ中の ; のあとに示された時刻に対応するTimeオブジェクトです。 ローカル時間でないオブジェクトを代入するとローカル時間に変更されます。

## EncHクラス

### スーパークラス

StructH

### 対応ヘッダ

- Encrypted:

### メソッド

encrypter, encrypter=( enc )
  エンコードを行ったソフトウェアの名前。
keyword, keyword=( key )
  キーワード。

## VersionHクラス

### スーパークラス

StructH

### 対応ヘッダ

- MIME-Version:

### メソッド

version
  "1.0" の形式の文字列。
major, major=( maj )
  メジャーバージョンを表す整数。
minor, minor=( min )
  マイナーバージョンを表す整数。

## CTypeHクラス

### スーパークラス

StructH

### 対応ヘッダ

- Content-Type:

### メソッド

main, main=( t )
  コンテントメインタイプ。'text' 'application' などの文字列。
sub, sub=( t )
  コンテントサブタイプ。'html' 'plain' 'gif' などの文字列。
params
  パラメータを Hash として格納したもの。 格納されている値のキーはすべて小文字の文字列です。

## CEncodingHクラス

### スーパークラス

StructH

### 対応ヘッダ

- Content-Transfer-Encoding:

### メソッド

encoding, encoding=( enc )
  転送時のエンコード方式を表す文字列。

## CDispositionクラス

### スーパークラス

StructH

### 対応ヘッダ

- Content-Disposition

### メソッド

disposition, disposition=( dis )
  'attatched' などの文字列
params
  パラメータを Hash として格納したもの。 格納されている値のキーはすべて小文字の文字列です。

## フィールド名とクラスの対応

フィールド名 | クラス
--- | ---
Date | DateH
Resent-Date | DateH
Received | RecvH
Return-Path | SaddrH
Sender | SaddrH
Resent-Sender | SaddrH
To | MaddrH
Cc | MaddrH
Bcc | MaddrH
From | MaddrH
Reply-To | MaddrH
Resent-To | MaddrH
Resent-Cc | MaddrH
Resent-Bcc | MaddrH
Resent-From | MaddrH
Resent-Reply-To | MaddrH
Message-ID | MsgidH
Resent-Message-ID | MsgidH
In-Reply-To | RefH
References | RefH
Keywords | KeyH
Encrypted | EncH
Subject | StringH
Comments | StringH
X-* | StringH
MIME-Version | VersionH
Content-Type | CTypeH
Content-Transfer-Encoding | CEncodingH
Content-ID | MsgidH
Content-Description | StringH

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