<code>Address Classes</code>

# `Address Classes`

## `class TMail::Address`

### クラスメソッド

`parse(str)` → `TMail::Address | TMail::AddressGroup`

  str: String

  文字列 `str` から `TMail::Address` または `TMail::AddressGroup` オブジェクトを生成します。`str` がメールアドレスとみなせない ときは例外 `TMail::SyntaxError` を発生します。

`new(locals, domains)` → `TMail::Address | TMail::AddressGroup`

  locals: [String]
  domains: [String]

  新しい `TMail::Address` オブジェクトを生成します。`locals`、`domains` はそれぞれ アドレススペック `(...@...)` の、＠の左側と右側をドットで `split` した 配列です。このメソッドは内部用であり使いにくくなっています。 `Address.parse` を使ってください。

### インスタンスメソッド

`address_group?` → `true | false`

  常に `false`

`spec` → `String`

  アドレススペック文字列 `("....@....")`。

`routes` → `[String]`

  配送経路を表す文字列の配列。`'@'` は含まない。

`name` → `String`
`phrase` → `String`

  俗に言うアドレスの「本名」部分。デコードされています。

`encoded(eol = "\r\n", encoding = 'j')` → `String`

  eol: String
  encoding: String

  `B` エンコードされた `RFC2822` 形式の文字列表現を返します。 行末コードに `eol`、文字エンコーディングに `encoding` を使います。 ただし `encoding` は `j` しか実装されていません。

`to_s(eol = "\n", encoding = 'e')` → `String`
`decoded(eol = "\n", encoding = 'e')` → `String`

  eol: String
  encoding: String

  デコードされた `RFC2822` 形式の文字列表現を返します。 行末コードに `eol`、文字エンコーディングに `encoding` を使います。

`==(other)` → `true | false`

  other: Object

  `spec` の同値判定によって `self` と `other` が等しいか判定します。 `name` や `routes` は影響しません。

## `class TMail::AddressGroup`

### クラスメソッド

`new(name, addrs)` → `TMail::AddressGroup`

  name: String
  addrs: [TMail::Address | TMail::AddressGroup]

  新しい `TMail::AddressGroup` オブジェクトを作成します。 `name` はグループ名を示す文字列、`addrs` は `TMail::Address` または `TMail::AddressGroup` の配列でなければいけません。

### インスタンスメソッド

`address_group?` → `true | false`

  常に `true`

`name` → `String`

  グループ名。

`addresses` → `[TMail::Address | TMail::AddressGroup]`

  `TMail::Address` または `TMail::AddressGroup` オブジェクトの配列。

`to_a` → `[TMail::Address | TMail::AddressGroup]`
`to_ary` → `[TMail::Address | TMail::AddressGroup]`

  `addresses.dup` と同じです。

`flatten` → `[TMail::Address]`

  再帰的に `TMail::AddressGroup` オブジェクトを平坦化し、 `TMail::Address` オブジェクトの配列を得ます。

`add(addr)`
`push(addr)`

  addr: TMail::Address | TMail::AddressGroup

  `TMail::Address` または `TMail::AddressGroup` オブジェクトを このグループに追加します。

`delete(addr)`

  addr: TMail::Address | TMail::AddressGroup

  `TMail::Address` または `TMail::AddressGroup` オブジェクトを このグループから削除し、非 `nil` を返します。もともとこの アドレスがグループ内に存在しない場合は無視して `nil` を返します。

`each {|a| .... }`

  a: TMail::Address | TMail::AddressGroup

  `#addresses` に対する繰り返し。

`each_address {|a| .... }`

  a: TMail::Address

  `#addresses` に対する繰り返し。ただし `TMail::AddressGroup` オブジェクトに 対しては内部に入って再帰的に繰り返します。

`encoded(eol = "\r\n", encoding = 'j')` → `String`

  eol: String
  encoding: String

  B エンコードされた RFC2822 形式の文字列表現を返します。

`decoded(eol = "\n", encoding = 'e')` → `String`

  eol: String
  encoding: String

  デコードされた `RFC2822` 形式の文字列表現を返します。

`==(other)` → `true | false`
`eql?(other)` → `true | false`

  other: Object

  `#addresses` の同値判定によって同じ内容かどうかを判断します。 `#name` は影響しません。