class TMail::Mail

クラスメソッド

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

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

load( filename: String )TMail::Mail

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

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

parse( str: String )TMail::Mail

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

インスタンスメソッド

portTMail::Port

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

body_portTMail::Port

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

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

each {|line| .... }

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

bodyString
preambleString

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

partsArray of TMail::Mail

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

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

epilogueString

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

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

multipart?

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

encoded( eol = "\n", encoding = 'j' )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 に、ヘッダ内のエンコード前の日本語文字列の文字コードを encoding に変換します。

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

inspectString

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

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

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

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

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

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

strftime( format: String, default = nil )String

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

to( default = nil )Array of String
to=( addrs: String/Array of String )

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

to_addrs( default = nil )Array of TMail::Address
to_addrs=( addrs: TMail::Address/Array of TMail::Address )

To: アドレスの配列。

cc( default = nil )Array of String
cc=( addrs: String/Array of String )

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

cc_addrs( default = nil )Array of TMail::Address
cc_addrs=( addrs: TMail::Address/Array of TMail::Address )

Cc: アドレスの配列。

bcc( default = nil )Array of String
bcc=( addrs: String/Array of String )

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

bcc_addrs( default = nil )Array of TMail::Address
bcc_addrs=( addrs: TMail::Address/Array of TMail::Address )

Bcc: アドレスの配列。

from( default = nil )Array of String
from=( addrs: String/Array of String )

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

from_addrs( default = nil )Array of TMail::Address
from_addrs=( addrs: TMail::Address/Array of TMail::Address )

From: アドレスの配列。

friendly_from( default = nil )String

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

reply_to( default = nil )Array of String
reply_to=( addrs: String/Array of String )

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

reply_to_addrs( default = nil )Array of TMail::Address
reply_to_addrs=( addrs: TMail::Address/Array of TMail::Address )

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

sender( default = nil )String
sender=( addr: String )

Sender: アドレスの spec

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

Sender: アドレス

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

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

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

メールのメッセージ ID

in_reply_to( default = nil )Array of String
in_reply_to=( ids: String/Array of String )

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

references( default = nil )Array of String
references=( ids: String/Array of String )

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

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

MIME バージョン。現在は常に 1.0 です。

set_mime_version( major: Integer, minor: Integer )
content_type( default = nil )String

メール本体のファイルタイプを示す文字列。 たとえば "text/plain"

main_type( default = nil )String

メール本体のメインタイプ (例:"text")。 常に小文字に統一されます。

sub_type( default = nil )String

メール本体のサブタイプ (例:"plain")。 常に小文字に統一されます。

content_type=( str )

Content-Typestr にします。str はたとえば "text/plain; charset=iso-2022-jp" のような形式の文字列で なければいけません。

set_content_type( main: String, sub: String, params: Hash = nil )

コンテントタイプを main/sub; param; param; ... のように設定します。 params は「名前(文字列)→値(文字列)」の形式の Hash で与えます。

multipart?

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

transfer_encoding( default = nil )String
transfer_encoding=( str: String )

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

disposition( default = nil )String
disposition=( field: String )

Content-Disposition の主値 (文字列)。常に小文字に統一されます。 セットするときは、すでに形式の整った文字列、たとえば 'attach; filename="note.txt"' を与えてください。

set_content_disposition( pos: String, params: Hash = nil )

disposition 文字列とパラメータのハッシュから Content-Disposition を セットします。params は「名前(文字列)→値(文字列)」の形式の Hash です。

destinations( default = nil )Array of String

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

reply_addresses( default = nil )Array of TMail::Address

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

error_reply_addresses( default = nil )Array of TMail::Address

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

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

clear

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

keysArray of TMail::HeaderField

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

[]( name )TMail::HeaderField

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

[]=( name, field )

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

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 で設定してください(詳細はソースコードを参照)。

key?( name )

name ヘッダがあれば真。

value?( field )

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

indexes( *keys )Array of TMail::HeaderField
indices( *keys )Array of TMail::HeaderField

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

valuesArray of TMail::HeaderField

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