class TMail::Mail

クラスメソッド

new(port = TMail::StringPort.new, config = DEFAULT_CONFIG)TMail::Mail

port: TMail::Port
config: TMail::Config

port から Mail オブジェクトを作成します。

load(filename)TMail::Mail

filename: String

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

UNIX mbox のような形式は単独では対応していません。 メールボックスクラスを使ってください。

parse(str)TMail::Mail

str: String

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

インスタンスメソッド

portTMail::Port

このメールオブジェクトの生成元のポートです。

body_portTMail::Port

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

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

each {|line| .... }

line: String

本文文字列の各行に対する繰り返し。 body_port.ropen {|f| f.each } と同じです。

bodyString
preambleString

メールボディ(本文)全てを文字列として返します。 MIME マルチパートメールのときは preamble に相当します。 この返り値を変更してもオリジナルは変更されません。

parts[TMail::Mail]

メールが MIME マルチパートメールの時、各パートが TMail::Mail の配列として 格納されています。マルチパートメールでないときは空の配列です。

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

epilogueString

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

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

multipart?

メールが MIME マルチパートのとき真。 このメソッドは Content-Type ヘッダの内容で真偽を判断します。

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

eol: String
encoding: String

メールを RFC2822 形式にエンコードした文字列に変換します。 その際、ヘッダの行末コードを eol に、ヘッダ内のエンコード前の 日本語文字列の文字コードを encoding に変換します。 ただし現在 encoding"j" (JIS) しか正常に動作しません。

バージョン 0.9 からは #to_s#decoded の別名になったので、この メソッドとは違うはたらきをします。

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

eol: String
encoding: String

メールをデコードされた文字列に変換します。その際、ヘッダの行末 コードを eol に、ヘッダ内のエンコード前の日本語文字列の文字コードを encoding に変換します。

バージョン 0.9 以降は #to_s はこのメソッドの別名になりました。

inspectString

以前は #decoded の別名でしたがバージョン 0.9 からは "#<TMail::Mail port=<StringPort:str=...>>" のような簡潔な文字列化を行います。

write_back(eol = "\n", encoding = 'e')

eol: String
encoding: String

メール全体を文字列化し body_port に書き戻します。その際、ヘッダの 行末コードを eol に、ヘッダ内の日本語文字列の文字コードを encoding に 変換します。

属性アクセスのためのメソッド

date(default = nil)Time
date=(datetime)

datetime: Time
default: Object

Date: ヘッダに対応する Time オブジェクト。 常にローカルタイムに変換されます。

strftime(format, default = nil)String

format: String
default: Object

Date: ヘッダに表現された時刻と対応する Time オブジェクトに対し strftime を呼びます。Date: ヘッダが存在しない場合は default を 返します。

to(default = nil)[String]
to=(specs)

specs: String | [String]
default: Object

To: アドレスの spec の配列。

to_addrs(default = nil)[TMail::Address | TMail::AddressGroup]
to_addrs=(addrs)

addrs: TMail::Address | [TMail::Address]
default: Object

To: アドレスの配列。

cc(default = nil)[String]
cc=(specs)

specs: String | [String]
default: Object

Cc: アドレスの spec の配列。

cc_addrs(default = nil)[TMail::Address]
cc_addrs=(addrs)

addrs: TMail::Address | [TMail::Address]
default: Object

Cc: アドレスの配列。

bcc(default = nil)[String]
bcc=(specs)

specs: String | [String]
default: Object

Bcc: アドレスの spec の配列。

bcc_addrs(default = nil)[TMail::Address]
bcc_addrs=(addrs)

addrs: TMail::Address | [TMail::Address]
default: Object

Bcc: アドレスの配列。

from(default = nil)[String]
from=(specs)

specs: String | [String]
default: Object

From: アドレスの spec の配列。

from_addrs(default = nil)[TMail::Address]
from_addrs=(addrs)

addrs: TMail::Address | [TMail::Address]
default: Object

From: アドレスの配列。

friendly_from(default = nil)String

default: Object

From: の最初のアドレスの phrase または specFrom: が存在しないときは default を返します。

reply_to(default = nil)[String]
reply_to=(specs)

specs: String | [String]
default: Object

Reply-To: アドレスの spec の配列。

reply_to_addrs(default = nil)[TMail::Address]
reply_to_addrs=(addrs)

addrs: TMail::Address | [TMail::Address]
default: Object

Reply-To: アドレスの配列。

sender(default = nil)String
sender=(spec)

spec: String

Sender: アドレスの spec

sender_addr(default = nil)TMail::Address
sender_addr=(addr)

addr: TMail::Address

Sender: アドレス

subject(default = nil)String
subject=(sbj)

sbj: String

Subject: の内容。 Subject: が存在しないときは default を返します。

message_id(default = nil)String
message_id=(id)

id: String

メールのメッセージ ID

in_reply_to(default = nil)[String]
in_reply_to=(ids)

ids: String | [String]

In-Reply-To: に含まれるメッセージ ID のリスト。

references(default = nil)[String]
references=(ids)

ids: String | [String]

References: に含まれるメッセージ ID のリスト。 現在は References: にはメッセージ ID 以外は 含められません。(RFC2822)

mime_version(default = nil)String
mime_version=(ver)

ver: String

MIME バージョン。現在は常に "1.0" です。 ヘッダが存在しない場合は default を返します。

set_mime_version(major, minor)

major: Integer
minor: Integer

MIME バージョンをセットします。

content_type(default = nil)String

メール本体のファイルタイプを示す文字列。例えば "text/plain"。 ヘッダが存在しない場合は default を返します。

main_type(default = nil)String

メール本体のメインタイプ (例:"text")。 常に小文字に統一されます。 ヘッダが存在しない場合は default を返します。

sub_type(default = nil)String

メール本体のサブタイプ (例:"plain")。 常に小文字に統一されます。 ヘッダが存在しない場合は default を返します。

content_type=(ctype)

ctype: String

Content-Type のメインタイプ・サブタイプを main_sub からセット します。main_sub は例えば "text/plain" のような形式でなければ いけません。

set_content_type(main, sub, params = nil)

main: String
sub: String
params: {String => String}

コンテントタイプを main/sub; param; param; ... のように設定します。

type_param(name, default = nil)String

name: String

Content-Typename パラメータの値を返します。 name に対応する値やヘッダそのものが存在しない場合は default を 返します。

# example
mail['Content-Type'] = 'text/plain; charset=iso-2022-jp'
p mail.type_param('charset')   # "iso-2022-jp"
multipart?true | false

Content-Type が MIME マルチパートメールであることを 示す内容ならば真。

transfer_encoding(default = nil)String
transfer_encoding=(encoding)

encoding: String

転送時に適用したエンコーディング (Content-Transfer-Encoding)'7bit' '8bit' 'Base64' 'Binary' など。

disposition(default = nil)String
disposition=(pos)

pos: String

Content-Disposition の主値 (文字列)。返り値は常に小文字に統一されます。 name に対応する値やヘッダそのものが存在しない場合は default を 返します。

# example
mail['Content-Disposition'] = 'attachement; filename="test.rb"'
p mail.disposition   # "attachment"
set_content_disposition(pos, params = nil)

pos: String
params: {String => String}

disposition 文字列とパラメータのハッシュから Content-Disposition を セットします。

disposition_param(key, default = nil)String

key: String

Content-Disposition の付加パラメータの name の値を取得します。 name に対応する値やヘッダそのものが存在しない場合は default を 返します。

# example
mail.disposition_param('filename')
destinations(default = nil)[String]

ToCcBcc すべてのアドレススペック文字列の配列を 返します。ひとつも存在しなければ default を返します。

reply_addresses(default = nil)[TMail::Address]

返信すべきアドレスを判断し、Address オブジェクトの 配列で返します。返信すべきアドレスがみつからなければ DEFAULT を返します。

error_reply_addresses(default = nil)[TMail::Address]

エラーメールを返送すべきアドレスを判断し、Address オブジェクトの 配列で返します。返送すべきアドレスがみつからなければ default を返します。

ヘッダフィールド直接操作用メソッド

clear

ヘッダを全て消去します。

keys[TMail::HeaderField]

ヘッダ名の配列を返します。

[](name)TMail::HeaderField

name: String

ヘッダ名からヘッダオブジェクトを返します。

[]=(name, field)

name: String
field: TMail::HeaderField

name ヘッダに field を設定します。field は文字列か TMail::HeaderField オブジェクトです。 Received など一部のヘッダに対してはさらにその配列も与えることができます。

delete(name)

name: String

name ヘッダを消します。

delete_if {|name, field| .... }

name: String
field: TMail::HeaderField

ヘッダ名とヘッダを与えてブロックを評価し、真ならその関連づけを消します。

each_header {|name, field| .... }
each_pair {|name, field| .... }

name: String
field: TMail::HeaderField

全てのヘッダ名とヘッダオブジェクトに対するくりかえし。

each_header_name {|name| .... }
each_key {|name| .... }

name: String

全てのヘッダ名に対するくりかえし。

each_field {|field| .... }
each_value {|field| .... }

field: TMail::HeaderField

全てのヘッダオブジェクトに対するくりかえし。 ヘッダの順序指定付きの each_header です。最初に指定したものが指定した 順番で並び、その他のヘッダがランダムに続きます。順序は文字列の配列 TMail::Mail::FIELD_ORDER で設定してください(詳細はソースコードを参照)。

key?(name)

name: String

name ヘッダがあれば真。

value?(field)

field: TMail::HeaderField

field ヘッダオブジェクトがあれば真。

values_at(*names)[TMail::HeaderField]
indexes(*names)[TMail::HeaderField]
indices(*names)[TMail::HeaderField]

names: [String]

全ての names について fetch した結果の配列を返します。

values[TMail::HeaderField]

登録されている全てのヘッダオブジェクトの配列を返します。