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
はメール一通分でなければいけません。
port
→ TMail::Port
このメールオブジェクトの生成元のポートです。
body_port
→ TMail::Port
メール本文を保存しているポートを返します。
ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。
実際に変更するためにはこのポートに書きこんだ後 #write_back
を呼ぶ
必要があります。
each {|line| .... }
本文文字列の各行に対する繰り返し。
body_port.ropen {|f| f.each }
と同じです。
body
→ String
preamble
→ String
メールボディ(本文)全てを文字列として返します。
MIME マルチパートメールのときは preamble
に相当します。
この返り値を変更してもオリジナルは変更されません。
parts
→ Array of TMail::Mail
メールが MIME マルチパートメールの時、各パートが TMail::Mail
の配列として
格納されています。マルチパートメールでないときは空の配列です。
ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。
実際に変更するためにはこのオブジェクトに書きこんだあと #write_back
を
呼ぶ必要があります。
epilogue
→ String
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
はこのメソッドの別名になりました。
inspect
→ String
以前は #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
または spec
。
From:
が存在しないときは 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
です。
ヘッダが存在しない場合は default
を返します。
set_mime_version( 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=( main_sub: String )
Content-Type
のメインタイプ・サブタイプを main_sub
からセット
します。main_sub
は例えば "text/plain"
のような形式でなければ
いけません。
set_content_type( main: String, sub: String, params: Hash = nil )
コンテントタイプを main/sub; param; param; ...
のように設定します。
params
は「名前(文字列)→値(文字列)」の形式の Hash
で与えます。
type_param( name: String, default = nil )
→ String
Content-Type
の name
パラメータの値を返します。
name
に対応する値やヘッダそのものが存在しない場合は default
を
返します。
# example mail['Content-Type'] = 'text/plain; charset=iso-2022-jp' p mail.type_param('charset') # "iso-2022-jp"
multipart?
→ bool
Content-Type
が MIME マルチパートメールであることを
示す内容ならば真。
transfer_encoding( default = nil )
→ String
transfer_encoding=( str: String )
転送時に適用したエンコーディング (Content-Transfer-Encoding)
。
'7bit' '8bit' 'Base64' 'Binary'
など。
disposition( default = nil )
→ String
disposition=( disp: String )
Content-Disposition
の主値 (文字列)。返り値は常に小文字に統一されます。
name
に対応する値やヘッダそのものが存在しない場合は default
を
返します。
# example mail['Content-Disposition'] = 'attachement; filename="test.rb"' p mail.disposition # "attachment"
set_content_disposition( pos: String, params: Hash = nil )
disposition
文字列とパラメータのハッシュから Content-Disposition
を
セットします。params
は「名前(文字列)→値(文字列)」の形式の Hash
です。
disposition_param( name: String, default = nil )
→ String
Content-Disposition
の付加パラメータの name
の値を取得します。
name
に対応する値やヘッダそのものが存在しない場合は default
を
返します。
# example mail.disposition_param('filename')
destinations( default = nil )
→ Array of String
To
、Cc
、Bcc
すべてのアドレススペック文字列の配列を
返します。ひとつも存在しなければ default
を返します。
reply_addresses( default = nil )
→ Array of TMail::Address
返信すべきアドレスを判断し、Address
オブジェクトの
配列で返します。返信すべきアドレスがみつからなければ
DEFAULT
を返します。
error_reply_addresses( default = nil )
→ Array of TMail::Address
エラーメールを返送すべきアドレスを判断し、Address
オブジェクトの
配列で返します。返送すべきアドレスがみつからなければ default
を返します。
clear
ヘッダを全て消去します。
keys
→ Array 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
した結果の配列を返します。
values
→ Array of TMail::HeaderField
登録されている全てのヘッダオブジェクトの配列を返します。