tmail 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +50 -5
- data/MANIFEST +188 -0
- data/NOTES +1 -1
- data/README +10 -4
- data/Rakefile +1 -10
- data/lib/tmail.rb +1 -0
- data/lib/tmail/Makefile +0 -1
- data/lib/tmail/address.rb +190 -17
- data/lib/tmail/attachments.rb +1 -1
- data/lib/tmail/base64.rb +4 -10
- data/lib/tmail/compat.rb +8 -6
- data/lib/tmail/config.rb +2 -6
- data/lib/tmail/core_extensions.rb +14 -18
- data/lib/tmail/encode.rb +47 -12
- data/lib/tmail/header.rb +7 -10
- data/lib/tmail/index.rb +2 -1
- data/lib/tmail/interface.rb +14 -12
- data/lib/tmail/loader.rb +2 -0
- data/lib/tmail/mail.rb +83 -24
- data/lib/tmail/mailbox.rb +70 -10
- data/lib/tmail/main.rb +2 -0
- data/lib/tmail/mbox.rb +2 -0
- data/lib/tmail/net.rb +16 -15
- data/lib/tmail/obsolete.rb +7 -12
- data/lib/tmail/parser.rb +1 -0
- data/lib/tmail/require_arch.rb +2 -0
- data/lib/tmail/scanner.rb +2 -1
- data/lib/tmail/scanner_r.rb +11 -10
- data/lib/tmail/utils.rb +83 -26
- data/lib/tmail/version.rb +3 -2
- data/log/BugTrackingLog.txt +1208 -0
- data/log/{ChangeLog.txt → Changelog-0.txt} +36 -0
- data/log/Changelog.txt +534 -0
- data/log/Testlog.txt +114 -0
- data/log/Todo.txt +0 -2
- data/meta/VERSION +1 -0
- data/meta/project.yaml +8 -5
- data/meta/unixname +1 -0
- data/setup.rb +1481 -0
- data/site/contributing/index.html +183 -0
- data/site/css/clean.css +27 -0
- data/site/css/layout.css +31 -0
- data/site/css/style.css +60 -0
- data/site/download/index.html +61 -0
- data/site/img/envelope.jpg +0 -0
- data/site/img/mailman.gif +0 -0
- data/site/img/stamp-sm.jpg +0 -0
- data/site/img/stamp.jpg +0 -0
- data/site/img/stampborder.jpg +0 -0
- data/site/img/tfire.jpg +0 -0
- data/site/img/tmail.png +0 -0
- data/site/index.html +270 -0
- data/site/js/jquery.js +31 -0
- data/site/log/Changelog.xsl +33 -0
- data/site/log/changelog.xml +1677 -0
- data/site/outdated/BUGS +3 -0
- data/site/outdated/DEPENDS +1 -0
- data/site/outdated/Incompatibilities +89 -0
- data/site/outdated/Incompatibilities.ja +102 -0
- data/site/outdated/NEWS +9 -0
- data/site/outdated/README.ja +73 -0
- data/site/outdated/doc.ja/address.html +275 -0
- data/site/outdated/doc.ja/basics.html +405 -0
- data/site/outdated/doc.ja/config.html +49 -0
- data/site/outdated/doc.ja/details.html +146 -0
- data/site/outdated/doc.ja/index.html +39 -0
- data/site/outdated/doc.ja/mail.html +793 -0
- data/site/outdated/doc.ja/mailbox.html +265 -0
- data/site/outdated/doc.ja/port.html +95 -0
- data/site/outdated/doc.ja/tmail.html +58 -0
- data/site/outdated/doc.ja/usage.html +202 -0
- data/site/outdated/rdd/address.rrd.m +229 -0
- data/site/outdated/rdd/basics.rd.m +275 -0
- data/site/outdated/rdd/config.rrd.m +26 -0
- data/site/outdated/rdd/details.rd.m +117 -0
- data/site/outdated/rdd/index.rhtml.m +54 -0
- data/site/outdated/rdd/mail.rrd.m +701 -0
- data/site/outdated/rdd/mailbox.rrd.m +228 -0
- data/site/outdated/rdd/port.rrd.m +69 -0
- data/site/outdated/rdd/tmail.rrd.m +33 -0
- data/site/outdated/rdd/usage.rd.m +247 -0
- data/site/quickstart/index.html +69 -0
- data/site/quickstart/quickstart.html +52 -0
- data/site/quickstart/usage.html +193 -0
- data/site/reference/address.html +247 -0
- data/site/reference/config.html +30 -0
- data/site/reference/index.html +101 -0
- data/site/reference/mail.html +726 -0
- data/site/reference/mailbox.html +245 -0
- data/site/reference/port.html +75 -0
- data/site/reference/tmail.html +35 -0
- data/test/fixtures/mailbox +405 -4
- data/test/fixtures/raw_email_multiple_from +30 -0
- data/test/kcode.rb +2 -2
- data/test/temp_test_one.rb +46 -0
- data/test/test_address.rb +77 -38
- data/test/test_encode.rb +0 -2
- data/test/test_header.rb +47 -24
- data/test/test_mail.rb +52 -9
- data/test/test_mbox.rb +28 -0
- data/test/test_port.rb +33 -27
- data/test/test_quote.rb +35 -8
- data/work/script/make +26 -0
- data/work/script/rdoc +39 -0
- data/{script → work/script}/setup +0 -0
- data/work/script/test +30 -0
- metadata +249 -184
- data/log/History.txt +0 -40
- data/meta/config.yaml +0 -8
- data/meta/icli.yaml +0 -16
- data/meta/tmail.roll +0 -3
- data/script/changelog +0 -19
- data/script/clobber/distclean +0 -8
- data/script/clobber/package +0 -10
- data/script/compile +0 -32
- data/script/pack/gem +0 -93
- data/script/pack/tgz +0 -41
- data/script/pack/zip +0 -41
- data/script/prepare +0 -15
- data/script/publish +0 -51
- data/script/rdoc +0 -42
- data/script/release +0 -10
- data/script/stamp +0 -33
- data/script/stats +0 -138
- data/script/tag +0 -25
- data/script/test +0 -36
@@ -0,0 +1,26 @@
|
|
1
|
+
= class TMail::Config
|
2
|
+
|
3
|
+
== Class Methods
|
4
|
+
|
5
|
+
: new(strict) -> TMail::Config
|
6
|
+
strict: true | false
|
7
|
+
|
8
|
+
j
|
9
|
+
TMail::Config オブジェクトを生成します。strict が真の場合、
|
10
|
+
生成された Config オブジェクトのすべての strict_* フラグを
|
11
|
+
オンにします。
|
12
|
+
e
|
13
|
+
create a TMail::Config object.
|
14
|
+
set true to all strict_* attributes if STRICT is true.
|
15
|
+
.
|
16
|
+
|
17
|
+
== Instance Methods
|
18
|
+
|
19
|
+
: strict_parse?
|
20
|
+
j
|
21
|
+
真ならば TMail のパーサはヘッダパース中に発生した
|
22
|
+
TMail::SyntaxError を返します。
|
23
|
+
e
|
24
|
+
If this flag is true, TMail's parsers may raise
|
25
|
+
TMail::SyntaxError. If not, it never raises SynaxError.
|
26
|
+
.
|
@@ -0,0 +1,117 @@
|
|
1
|
+
e
|
2
|
+
= Feature Details
|
3
|
+
j
|
4
|
+
= 仕様の詳細
|
5
|
+
.
|
6
|
+
|
7
|
+
e
|
8
|
+
== Character Encodings
|
9
|
+
|
10
|
+
I DO NOT support non-Japanese character encodings until
|
11
|
+
ruby implements M17N functions. It's too complex for me.
|
12
|
+
|
13
|
+
j
|
14
|
+
== 文字コードの扱いについて
|
15
|
+
|
16
|
+
=== 入力
|
17
|
+
|
18
|
+
基本的には、パーサへの入力は RFC に沿って正しいエンコードが
|
19
|
+
なされているものと想定しています。ですが現実にはそうでない
|
20
|
+
メールも多いので、ある程度の規格外メールは許容しています。
|
21
|
+
たとえば以下のようなヘッダは TMail のサポート対象です。
|
22
|
+
(ただし $KCODE が適切にセットされていなければいけません)
|
23
|
+
--
|
24
|
+
To: 日本語 <aamine@loveruby.net>
|
25
|
+
Content-Disposition: attached; filename=日本語.doc
|
26
|
+
--
|
27
|
+
|
28
|
+
また $KCODE=EUC/SJIS の場合は以下のようなヘッダもパース
|
29
|
+
します。('日本語' は生の iso-2022-jp)
|
30
|
+
--
|
31
|
+
To: 日本語 <aamine@loveruby.net>
|
32
|
+
To: "日本語" <aamine@loveruby.net>
|
33
|
+
To: Minero Aoki <aamine@loveruby.net> (日本語)
|
34
|
+
Content-Disposition: attached; filename=日本語.doc
|
35
|
+
Content-Disposition: attached; filename="日本語.doc"
|
36
|
+
--
|
37
|
+
クオートやコメント内に EUC や SJIS、UTF8 を生で入れている
|
38
|
+
ヘッダはあまりに邪悪すぎるのでサポートしません。
|
39
|
+
|
40
|
+
いわゆる半角文字および機種依存文字はとりあえず考慮していません。
|
41
|
+
が、近くない将来ならば多少はなんとかできるかもしれません。
|
42
|
+
|
43
|
+
日本語以外のエンコーディングには、M17N Ruby が安定版として
|
44
|
+
リリースされるまでは対応しません。
|
45
|
+
|
46
|
+
=== デコード出力
|
47
|
+
|
48
|
+
TMail の大部分のメソッドは特に断りがない限りデコードした
|
49
|
+
文字列を返します。文字列の中に日本語文字列が存在する場合は、
|
50
|
+
$KCODE に従いエンコードを変換して返します。ただしサポート
|
51
|
+
するのは $KCODE=EUC/SJIS の場合のみで、それ以外 (つまり NONE か UTF8)
|
52
|
+
のときはエンコーディングは一切変換されません。
|
53
|
+
Ruby 1.6 以降では $KCODE=NONE がデフォルトなので注意してください。
|
54
|
+
|
55
|
+
=== エンコード出力
|
56
|
+
|
57
|
+
encoded メソッドを代表としたエンコード出力メソッドはすべて
|
58
|
+
RFC 的に正しいエンコードを行います (と思います)。出力側で
|
59
|
+
サポートする文字エンコーディングは iso-2022-jp、MIME エン
|
60
|
+
コーディングは Base64/B のみです。これは将来に渡って変えません。
|
61
|
+
|
62
|
+
|
63
|
+
e
|
64
|
+
== Header Comments
|
65
|
+
|
66
|
+
TMail discards ALL comments on converting HeaderField objects
|
67
|
+
into strings, because I cannot preserve position of comments.
|
68
|
+
|
69
|
+
j
|
70
|
+
== コメント
|
71
|
+
|
72
|
+
ヘッダにはコメントを含められます。たとえば以下のうち括弧で
|
73
|
+
くくられた部分がコメントです。
|
74
|
+
--
|
75
|
+
To: aamine@loveruby.net (This is comment.)
|
76
|
+
--
|
77
|
+
TMail のパーサはコメントをパースしてヘッダオブジェクトの
|
78
|
+
comments に格納しますが、再文字列化するときはすべて捨てる
|
79
|
+
ようになっています。なぜかというと、メールヘッダのコメントは
|
80
|
+
本当にどこにでも置けるようになっているので、パースした後から
|
81
|
+
ではコメントがどの場所にあったのか判断できないからです。
|
82
|
+
たとえば以下のようなヘッダはよく見かけます。
|
83
|
+
--
|
84
|
+
Received: from mail.loveruby.net (mail.loveruby.net [192.168.1.1])
|
85
|
+
by doraemon.edit.ne.jp (8.12.1/8.12.0) with ESMTP id g0CGj4bo035
|
86
|
+
for <aamine@mx.edit.ne.jp>; Sun, 13 Jan 2002 01:45:05 +0900 (JST)
|
87
|
+
--
|
88
|
+
こういう場合、各コメントをどの要素に所属させるかは人間で
|
89
|
+
なければ判断できません。ある程度ヒューリスティックにやることは
|
90
|
+
可能ですが、いったん外れたら完璧に失敗してしまうでしょう。
|
91
|
+
元のヘッダを再生できるように見せかけておいて時々失敗すると
|
92
|
+
いうのはあまりに有害ですから、それよりは潔く全部捨てる、
|
93
|
+
というのがいまのところの結論です。どうせコメントはコメントで
|
94
|
+
あって本質には関係ないのですから、もうコメントに頼るのは
|
95
|
+
やめましょう。
|
96
|
+
|
97
|
+
特に、アドレスフィールドにおいて本名をコメントに入れたりする
|
98
|
+
のは最低です。ちゃんと文法的に名前を格納する場所があるのに、
|
99
|
+
わざわざコメントを使う理由は全くありません。そういうヘッダ
|
100
|
+
設定をしている人はすぐにメーラか設定かどちらかを変えましょう。
|
101
|
+
|
102
|
+
もっとも、大抵の場合にはこれで問題ないのですが、メールの内容を
|
103
|
+
フィルタリングするような場合は致命傷になりえます。たとえば ML
|
104
|
+
ドライバでは Subject を加工したりしたいでしょうから、次のような
|
105
|
+
コードを書きたくなります。
|
106
|
+
--
|
107
|
+
mail = TMail::Mail.load(filename)
|
108
|
+
mail.subject = "[my-list:#{number}] " + mail.subject
|
109
|
+
mail.write_back
|
110
|
+
--
|
111
|
+
しかしこれではコメントが失われてしまいます。消えてもいい
|
112
|
+
コメントもありますが、Received: のコメントなどは非常に
|
113
|
+
重要です。
|
114
|
+
|
115
|
+
これを避けるには、ひとつの TMail::Mail オブジェクトは常に
|
116
|
+
情報取得か出力のどちらかだけに限定して使うことです。将来は
|
117
|
+
もう少しいい方法を考えます。
|
@@ -0,0 +1,54 @@
|
|
1
|
+
j
|
2
|
+
<h1>TMail ユーザーマニュアル</h1>
|
3
|
+
e
|
4
|
+
<h1>TMail User Manual</h1>
|
5
|
+
.
|
6
|
+
|
7
|
+
<p>
|
8
|
+
j
|
9
|
+
バージョン 0.10 対応
|
10
|
+
e
|
11
|
+
for version 0.10
|
12
|
+
.
|
13
|
+
</p>
|
14
|
+
|
15
|
+
<ul>
|
16
|
+
j
|
17
|
+
<li><a href="basics.html" >メールシステムの基礎 </a>
|
18
|
+
<li><a href="usage.html" >TMail の基本 </a>
|
19
|
+
<li><a href="details.html">仕様の詳細 </a>
|
20
|
+
<li><a href="mail.html" >Mail クラスリファレンス </a>
|
21
|
+
<li><a href="address.html">アドレスクラスリファレンス </a>
|
22
|
+
<li><a href="mailbox.html">メールボックスクラスリファレンス </a>
|
23
|
+
<li><a href="port.html" >ポートクラスリファレンス </a>
|
24
|
+
<li><a href="config.html" >Config クラスリファレンス </a>
|
25
|
+
<li><a href="tmail.html" >TMail モジュールリファレンス </a>
|
26
|
+
<% if FileTest.exist?(destdir + '/BUGS') %>
|
27
|
+
<li><a href="BUGS" >既知のバグ </a>
|
28
|
+
<% end %>
|
29
|
+
<% if FileTest.exist?(destdir + '/TODO') %>
|
30
|
+
<li><a href="TODO" >ToDo </a>
|
31
|
+
<% end %>
|
32
|
+
<% if FileTest.exist?(destdir + '/ChangeLog') %>
|
33
|
+
<li><a href="ChangeLog" >変更履歴 </a>
|
34
|
+
<% end %>
|
35
|
+
e
|
36
|
+
<li><a href="usage.html" >Usage </a>
|
37
|
+
<li><a href="details.html">Feature Details </a>
|
38
|
+
<li><a href="mail.html" >Mail Message Class </a>
|
39
|
+
<li><a href="address.html">Mail Address Classes </a>
|
40
|
+
<li><a href="mailbox.html">Mailbox Classes </a>
|
41
|
+
<li><a href="port.html" >Port and Stream Classes </a>
|
42
|
+
<li><a href="config.html" >Config Class </a>
|
43
|
+
<li><a href="tmail.html" >TMail Module </a>
|
44
|
+
<% if FileTest.exist?(destdir + '/BUGS') %>
|
45
|
+
<li><a href="BUGS" >Known Bugs </a>
|
46
|
+
<% end %>
|
47
|
+
<% if FileTest.exist?(destdir + '/TODO') %>
|
48
|
+
<li><a href="TODO" >To Do List </a>
|
49
|
+
<% end %>
|
50
|
+
<% if FileTest.exist?(destdir + '/ChangeLog') %>
|
51
|
+
<li><a href="ChangeLog" >Change Log </a>
|
52
|
+
<% end %>
|
53
|
+
.
|
54
|
+
</ul>
|
@@ -0,0 +1,701 @@
|
|
1
|
+
@nocode MH
|
2
|
+
= class TMail::Mail
|
3
|
+
|
4
|
+
== Class Methods
|
5
|
+
|
6
|
+
: new(port = TMail::StringPort.new, config = DEFAULT_CONFIG) -> TMail::Mail
|
7
|
+
port: TMail::Port
|
8
|
+
config: TMail::Config
|
9
|
+
|
10
|
+
j
|
11
|
+
port から Mail オブジェクトを作成します。
|
12
|
+
e
|
13
|
+
creates a new 'TMail::Mail' object from PORT.
|
14
|
+
.
|
15
|
+
|
16
|
+
: load(filename) -> TMail::Mail
|
17
|
+
filename: String
|
18
|
+
|
19
|
+
j
|
20
|
+
ファイル filename からメールをロードして Mail オブジェクトを作成します。
|
21
|
+
ロードするファイルは MH のメールのようにメール一通がファイルひとつに
|
22
|
+
対応していなければいけません。
|
23
|
+
|
24
|
+
,UNIX mbox のような形式は単独では対応していません。
|
25
|
+
<a href="mbox.html">メールボックスクラス</a>を使ってください。
|
26
|
+
e
|
27
|
+
creates a new 'TMail::Mail' object. FILENAME is the name of file
|
28
|
+
which contains just one mail (e.g. MH mail file).
|
29
|
+
.
|
30
|
+
|
31
|
+
: parse(str) -> TMail::Mail
|
32
|
+
str: String
|
33
|
+
|
34
|
+
j
|
35
|
+
文字列 str をパースして TMail::Mail オブジェクトを作成します。
|
36
|
+
str はメール一通分でなければいけません。
|
37
|
+
e
|
38
|
+
parses STR and creates a new 'TMail::Mail' object.
|
39
|
+
.
|
40
|
+
|
41
|
+
== Instance Methods
|
42
|
+
|
43
|
+
: port -> TMail::Port
|
44
|
+
j
|
45
|
+
このメールオブジェクトの生成元のポートです。
|
46
|
+
e
|
47
|
+
the source port of this mail.
|
48
|
+
.
|
49
|
+
|
50
|
+
: body_port -> TMail::Port
|
51
|
+
j
|
52
|
+
メール本文を保存しているポートを返します。
|
53
|
+
|
54
|
+
ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。
|
55
|
+
実際に変更するためにはこのポートに書きこんだ後 #write_back を呼ぶ
|
56
|
+
必要があります。
|
57
|
+
e
|
58
|
+
the port to save body of this mail.
|
59
|
+
.
|
60
|
+
|
61
|
+
: each {|line| .... }
|
62
|
+
line: String
|
63
|
+
|
64
|
+
j
|
65
|
+
本文文字列の各行に対する繰り返し。
|
66
|
+
body_port.ropen {|f| f.each } と同じです。
|
67
|
+
e
|
68
|
+
iterates for each lines of mail body.
|
69
|
+
.
|
70
|
+
|
71
|
+
: body -> String
|
72
|
+
: preamble -> String
|
73
|
+
j
|
74
|
+
メールボディ(本文)全てを文字列として返します。
|
75
|
+
MIME マルチパートメールのときは preamble に相当します。
|
76
|
+
この返り値を変更してもオリジナルは変更されません。
|
77
|
+
e
|
78
|
+
the mail body. If the mail is a MIME multipart mail,
|
79
|
+
this attribute represents "preamble".
|
80
|
+
.
|
81
|
+
|
82
|
+
: parts -> [TMail::Mail]
|
83
|
+
j
|
84
|
+
メールが MIME マルチパートメールの時、各パートが TMail::Mail の配列として
|
85
|
+
格納されています。マルチパートメールでないときは空の配列です。
|
86
|
+
|
87
|
+
ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。
|
88
|
+
実際に変更するためにはこのオブジェクトに書きこんだあと #write_back を
|
89
|
+
呼ぶ必要があります。
|
90
|
+
e
|
91
|
+
parts of this mail. (valid only if this mail is a MIME multipart mail)
|
92
|
+
.
|
93
|
+
|
94
|
+
: epilogue -> String
|
95
|
+
j
|
96
|
+
MIME マルチパートメールでの epilogue に相当する文字列です。
|
97
|
+
通常のメールのときは空文字列が入っています。
|
98
|
+
|
99
|
+
ただしここに書きこんでもロード元のファイル(や文字列)は変更されません。
|
100
|
+
実際に変更するためには書きこんだ後 #write_back を呼ぶ必要があります。
|
101
|
+
e
|
102
|
+
If the mail was MIME multipart mail, this represent "epilogue" string.
|
103
|
+
Else, empty string.
|
104
|
+
.
|
105
|
+
|
106
|
+
: multipart?
|
107
|
+
j
|
108
|
+
メールが MIME マルチパートのとき真。
|
109
|
+
このメソッドは Content-Type ヘッダの内容で真偽を判断します。
|
110
|
+
e
|
111
|
+
true if the message is a multi-part mail.
|
112
|
+
.
|
113
|
+
|
114
|
+
: encoded(eol = "\n", encoding = 'j') -> String
|
115
|
+
eol: String
|
116
|
+
encoding: String
|
117
|
+
|
118
|
+
j
|
119
|
+
メールを RFC2822 形式にエンコードした文字列に変換します。
|
120
|
+
その際、ヘッダの行末コードを eol に、ヘッダ内のエンコード前の
|
121
|
+
日本語文字列の文字コードを encoding に変換します。
|
122
|
+
ただし現在 encoding は "j" (JIS) しか正常に動作しません。
|
123
|
+
|
124
|
+
バージョン 0.9 からは #to_s は #decoded の別名になったので、この
|
125
|
+
メソッドとは違うはたらきをします。
|
126
|
+
e
|
127
|
+
converts the mail object to a MIME encoded string.
|
128
|
+
.
|
129
|
+
|
130
|
+
: decoded(eol = "\n", encoding = 'e') -> String
|
131
|
+
: to_s(eol = "\n", encoding = 'e') -> String
|
132
|
+
eol: String
|
133
|
+
encoding: String
|
134
|
+
|
135
|
+
j
|
136
|
+
メールをデコードされた文字列に変換します。その際、ヘッダの行末
|
137
|
+
コードを eol に、ヘッダ内のエンコード前の日本語文字列の文字コードを
|
138
|
+
encoding に変換します。
|
139
|
+
|
140
|
+
バージョン 0.9 以降は #to_s はこのメソッドの別名になりました。
|
141
|
+
e
|
142
|
+
converts the mail object to a decoded string.
|
143
|
+
.
|
144
|
+
|
145
|
+
: inspect -> String
|
146
|
+
j
|
147
|
+
以前は #decoded の別名でしたがバージョン 0.9 からは
|
148
|
+
"#<TMail::Mail port=<StringPort:str=...>>"
|
149
|
+
のような簡潔な文字列化を行います。
|
150
|
+
e
|
151
|
+
returns simple string representation like
|
152
|
+
'"#<TMail::Mail port=<StringPort:str=...>>"'
|
153
|
+
.
|
154
|
+
|
155
|
+
: write_back(eol = "\n", encoding = 'e')
|
156
|
+
eol: String
|
157
|
+
encoding: String
|
158
|
+
|
159
|
+
j
|
160
|
+
メール全体を文字列化し body_port に書き戻します。その際、ヘッダの
|
161
|
+
行末コードを eol に、ヘッダ内の日本語文字列の文字コードを encoding に
|
162
|
+
変換します。
|
163
|
+
e
|
164
|
+
converts this mail into string and write back to 'body_port',
|
165
|
+
setting line terminator to EOL.
|
166
|
+
.
|
167
|
+
|
168
|
+
j
|
169
|
+
=== 属性アクセスのためのメソッド
|
170
|
+
e
|
171
|
+
=== Property Access Method
|
172
|
+
.
|
173
|
+
|
174
|
+
: date(default = nil) -> Time
|
175
|
+
: date=(datetime)
|
176
|
+
datetime: Time
|
177
|
+
default: Object
|
178
|
+
|
179
|
+
j
|
180
|
+
Date: ヘッダに対応する Time オブジェクト。
|
181
|
+
常にローカルタイムに変換されます。
|
182
|
+
e
|
183
|
+
a Time object of Date: header field.
|
184
|
+
.
|
185
|
+
|
186
|
+
: strftime(format, default = nil) -> String
|
187
|
+
format: String
|
188
|
+
default: Object
|
189
|
+
|
190
|
+
j
|
191
|
+
Date: ヘッダに表現された時刻と対応する Time オブジェクトに対し
|
192
|
+
strftime を呼びます。Date: ヘッダが存在しない場合は default を
|
193
|
+
返します。
|
194
|
+
e
|
195
|
+
is equals to 'date.strftime(format)'.
|
196
|
+
If date is not exist, this method does nothing and
|
197
|
+
returns DEFAULT.
|
198
|
+
.
|
199
|
+
|
200
|
+
: to(default = nil) -> [String]
|
201
|
+
: to=(specs)
|
202
|
+
specs: String | [String]
|
203
|
+
default: Object
|
204
|
+
|
205
|
+
j
|
206
|
+
To: アドレスの spec の配列。
|
207
|
+
e
|
208
|
+
address specs for To: header field.
|
209
|
+
.
|
210
|
+
|
211
|
+
: to_addrs(default = nil) -> [TMail::Address | TMail::AddressGroup]
|
212
|
+
: to_addrs=(addrs)
|
213
|
+
addrs: TMail::Address | [TMail::Address]
|
214
|
+
default: Object
|
215
|
+
|
216
|
+
j
|
217
|
+
To: アドレスの配列。
|
218
|
+
e
|
219
|
+
adresses which is represented in To: header field.
|
220
|
+
.
|
221
|
+
|
222
|
+
: cc(default = nil) -> [String]
|
223
|
+
: cc=(specs)
|
224
|
+
specs: String | [String]
|
225
|
+
default: Object
|
226
|
+
|
227
|
+
j
|
228
|
+
Cc: アドレスの spec の配列。
|
229
|
+
e
|
230
|
+
address specs for Cc: header field.
|
231
|
+
.
|
232
|
+
|
233
|
+
: cc_addrs(default = nil) -> [TMail::Address]
|
234
|
+
: cc_addrs=(addrs)
|
235
|
+
addrs: TMail::Address | [TMail::Address]
|
236
|
+
default: Object
|
237
|
+
|
238
|
+
j
|
239
|
+
Cc: アドレスの配列。
|
240
|
+
e
|
241
|
+
addresses which is represented in Cc: header field.
|
242
|
+
.
|
243
|
+
|
244
|
+
: bcc(default = nil) -> [String]
|
245
|
+
: bcc=(specs)
|
246
|
+
specs: String | [String]
|
247
|
+
default: Object
|
248
|
+
|
249
|
+
j
|
250
|
+
Bcc: アドレスの spec の配列。
|
251
|
+
e
|
252
|
+
address specs for Bcc: header field.
|
253
|
+
.
|
254
|
+
|
255
|
+
: bcc_addrs(default = nil) -> [TMail::Address]
|
256
|
+
: bcc_addrs=(addrs)
|
257
|
+
addrs: TMail::Address | [TMail::Address]
|
258
|
+
default: Object
|
259
|
+
|
260
|
+
j
|
261
|
+
Bcc: アドレスの配列。
|
262
|
+
e
|
263
|
+
adresses which is represented in Bcc: header field.
|
264
|
+
.
|
265
|
+
|
266
|
+
: from(default = nil) -> [String]
|
267
|
+
: from=(specs)
|
268
|
+
specs: String | [String]
|
269
|
+
default: Object
|
270
|
+
|
271
|
+
j
|
272
|
+
From: アドレスの spec の配列。
|
273
|
+
e
|
274
|
+
address specs for From: header field.
|
275
|
+
.
|
276
|
+
|
277
|
+
: from_addrs(default = nil) -> [TMail::Address]
|
278
|
+
: from_addrs=(addrs)
|
279
|
+
addrs: TMail::Address | [TMail::Address]
|
280
|
+
default: Object
|
281
|
+
|
282
|
+
j
|
283
|
+
From: アドレスの配列。
|
284
|
+
e
|
285
|
+
adresses which is represented in From: header field.
|
286
|
+
.
|
287
|
+
|
288
|
+
: friendly_from(default = nil) -> String
|
289
|
+
default: Object
|
290
|
+
|
291
|
+
j
|
292
|
+
From: の最初のアドレスの phrase または spec。
|
293
|
+
From: が存在しないときは default を返します。
|
294
|
+
e
|
295
|
+
a "phrase" part or address spec of the first From: address.
|
296
|
+
.
|
297
|
+
|
298
|
+
: reply_to(default = nil) -> [String]
|
299
|
+
: reply_to=(specs)
|
300
|
+
specs: String | [String]
|
301
|
+
default: Object
|
302
|
+
|
303
|
+
j
|
304
|
+
Reply-To: アドレスの spec の配列。
|
305
|
+
e
|
306
|
+
address specs of Reply-To: header field.
|
307
|
+
.
|
308
|
+
|
309
|
+
: reply_to_addrs(default = nil) -> [TMail::Address]
|
310
|
+
: reply_to_addrs=(addrs)
|
311
|
+
addrs: TMail::Address | [TMail::Address]
|
312
|
+
default: Object
|
313
|
+
|
314
|
+
j
|
315
|
+
Reply-To: アドレスの配列。
|
316
|
+
e
|
317
|
+
adresses which is represented in Reply-To: header field.
|
318
|
+
.
|
319
|
+
|
320
|
+
: sender(default = nil) -> String
|
321
|
+
: sender=(spec)
|
322
|
+
spec: String
|
323
|
+
|
324
|
+
j
|
325
|
+
Sender: アドレスの spec
|
326
|
+
e
|
327
|
+
address spec for Sender: header field.
|
328
|
+
.
|
329
|
+
|
330
|
+
: sender_addr(default = nil) -> TMail::Address
|
331
|
+
: sender_addr=(addr)
|
332
|
+
addr: TMail::Address
|
333
|
+
|
334
|
+
j
|
335
|
+
Sender: アドレス
|
336
|
+
e
|
337
|
+
an address which is represented in Sender: header field.
|
338
|
+
.
|
339
|
+
|
340
|
+
: subject(default = nil) -> String
|
341
|
+
: subject=(sbj)
|
342
|
+
sbj: String
|
343
|
+
|
344
|
+
j
|
345
|
+
Subject: の内容。
|
346
|
+
Subject: が存在しないときは default を返します。
|
347
|
+
e
|
348
|
+
the subject of the message.
|
349
|
+
.
|
350
|
+
|
351
|
+
: message_id(default = nil) -> String
|
352
|
+
: message_id=(id)
|
353
|
+
id: String
|
354
|
+
|
355
|
+
j
|
356
|
+
メールのメッセージ ID。
|
357
|
+
e
|
358
|
+
message ID string.
|
359
|
+
.
|
360
|
+
|
361
|
+
: in_reply_to(default = nil) -> [String]
|
362
|
+
: in_reply_to=(ids)
|
363
|
+
ids: String | [String]
|
364
|
+
|
365
|
+
j
|
366
|
+
In-Reply-To: に含まれるメッセージ ID のリスト。
|
367
|
+
e
|
368
|
+
message IDs of replying mails.
|
369
|
+
.
|
370
|
+
|
371
|
+
: references(default = nil) -> [String]
|
372
|
+
: references=(ids)
|
373
|
+
ids: String | [String]
|
374
|
+
|
375
|
+
j
|
376
|
+
References: に含まれるメッセージ ID のリスト。
|
377
|
+
現在は References: にはメッセージ ID 以外は
|
378
|
+
含められません。(RFC2822)
|
379
|
+
e
|
380
|
+
message IDs of all referencing (replying) mails.
|
381
|
+
.
|
382
|
+
|
383
|
+
: mime_version(default = nil) -> String
|
384
|
+
: mime_version=(ver)
|
385
|
+
ver: String
|
386
|
+
|
387
|
+
j
|
388
|
+
MIME バージョン。現在は常に "1.0" です。
|
389
|
+
ヘッダが存在しない場合は default を返します。
|
390
|
+
e
|
391
|
+
MIME version.
|
392
|
+
If it does not exist, returns the DEFAULT.
|
393
|
+
.
|
394
|
+
|
395
|
+
: set_mime_version(major, minor)
|
396
|
+
major: Integer
|
397
|
+
minor: Integer
|
398
|
+
|
399
|
+
j
|
400
|
+
MIME バージョンをセットします。
|
401
|
+
e
|
402
|
+
set MIME version from integers.
|
403
|
+
.
|
404
|
+
|
405
|
+
: content_type(default = nil) -> String
|
406
|
+
j
|
407
|
+
メール本体のファイルタイプを示す文字列。例えば "text/plain"。
|
408
|
+
ヘッダが存在しない場合は default を返します。
|
409
|
+
e
|
410
|
+
the content type of the mail message (e.g. "text/plain").
|
411
|
+
If it does not exist, returns the DEFAULT.
|
412
|
+
.
|
413
|
+
|
414
|
+
: main_type(default = nil) -> String
|
415
|
+
j
|
416
|
+
メール本体のメインタイプ (例:"text")。
|
417
|
+
常に小文字に統一されます。
|
418
|
+
ヘッダが存在しない場合は default を返します。
|
419
|
+
e
|
420
|
+
the main content type of the mail message. (e.g. "text")
|
421
|
+
If it does not exist, returns the DEFAULT.
|
422
|
+
.
|
423
|
+
|
424
|
+
: sub_type(default = nil) -> String
|
425
|
+
j
|
426
|
+
メール本体のサブタイプ (例:"plain")。
|
427
|
+
常に小文字に統一されます。
|
428
|
+
ヘッダが存在しない場合は default を返します。
|
429
|
+
e
|
430
|
+
the sub content type of the mail message. (e.g. "plain")
|
431
|
+
If it does not exist, returns the DEFAULT.
|
432
|
+
.
|
433
|
+
|
434
|
+
: content_type=(ctype)
|
435
|
+
ctype: String
|
436
|
+
|
437
|
+
j
|
438
|
+
Content-Type のメインタイプ・サブタイプを main_sub からセット
|
439
|
+
します。main_sub は例えば "text/plain" のような形式でなければ
|
440
|
+
いけません。
|
441
|
+
e
|
442
|
+
set content type to STR.
|
443
|
+
.
|
444
|
+
|
445
|
+
: set_content_type(main, sub, params = nil)
|
446
|
+
main: String
|
447
|
+
sub: String
|
448
|
+
params: {String => String}
|
449
|
+
|
450
|
+
j
|
451
|
+
コンテントタイプを main/sub; param; param; ... のように設定します。
|
452
|
+
e
|
453
|
+
set Content-type: header as "main/sub; param=val; param=val; ...".
|
454
|
+
.
|
455
|
+
|
456
|
+
: type_param(name, default = nil) -> String
|
457
|
+
name: String
|
458
|
+
|
459
|
+
j
|
460
|
+
Content-Type の name パラメータの値を返します。
|
461
|
+
name に対応する値やヘッダそのものが存在しない場合は default を
|
462
|
+
返します。
|
463
|
+
e
|
464
|
+
returns the value corresponding to the case-insensitive
|
465
|
+
NAME of Content-Type parameter.
|
466
|
+
If it does not exist, returns the DEFAULT.
|
467
|
+
.
|
468
|
+
--
|
469
|
+
# example
|
470
|
+
mail['Content-Type'] = 'text/plain; charset=iso-2022-jp'
|
471
|
+
p mail.type_param('charset') # "iso-2022-jp"
|
472
|
+
--
|
473
|
+
|
474
|
+
: multipart? -> true | false
|
475
|
+
j
|
476
|
+
Content-Type が MIME マルチパートメールであることを
|
477
|
+
示す内容ならば真。
|
478
|
+
e
|
479
|
+
judge if this mail is MIME multi part mail,
|
480
|
+
by inspecting Content-Type: header field.
|
481
|
+
.
|
482
|
+
|
483
|
+
: transfer_encoding(default = nil) -> String
|
484
|
+
: transfer_encoding=(encoding)
|
485
|
+
encoding: String
|
486
|
+
j
|
487
|
+
転送時に適用したエンコーディング (Content-Transfer-Encoding)。
|
488
|
+
'7bit' '8bit' 'Base64' 'Binary' など。
|
489
|
+
e
|
490
|
+
Content-Transfer-Encoding. (e.g. "7bit" "Base64")
|
491
|
+
.
|
492
|
+
|
493
|
+
: disposition(default = nil) -> String
|
494
|
+
: disposition=(pos)
|
495
|
+
pos: String
|
496
|
+
|
497
|
+
j
|
498
|
+
Content-Disposition の主値 (文字列)。返り値は常に小文字に統一されます。
|
499
|
+
name に対応する値やヘッダそのものが存在しない場合は default を
|
500
|
+
返します。
|
501
|
+
e
|
502
|
+
Content-Disposition main value (e.g. "attachment").
|
503
|
+
If it does not exist, returns the DEFAULT.
|
504
|
+
.
|
505
|
+
--
|
506
|
+
# example
|
507
|
+
mail['Content-Disposition'] = 'attachement; filename="test.rb"'
|
508
|
+
p mail.disposition # "attachment"
|
509
|
+
--
|
510
|
+
|
511
|
+
: set_content_disposition(pos, params = nil)
|
512
|
+
pos: String
|
513
|
+
params: {String => String}
|
514
|
+
|
515
|
+
j
|
516
|
+
disposition 文字列とパラメータのハッシュから Content-Disposition を
|
517
|
+
セットします。
|
518
|
+
e
|
519
|
+
set content disposition.
|
520
|
+
.
|
521
|
+
|
522
|
+
: disposition_param(key, default = nil) -> String
|
523
|
+
key: String
|
524
|
+
|
525
|
+
j
|
526
|
+
Content-Disposition の付加パラメータの name の値を取得します。
|
527
|
+
name に対応する値やヘッダそのものが存在しない場合は default を
|
528
|
+
返します。
|
529
|
+
e
|
530
|
+
returns a value corresponding to the Content-Disposition
|
531
|
+
parameter NAME (e.g. filename).
|
532
|
+
If it does not exist, returns the DEFAULT.
|
533
|
+
.
|
534
|
+
--
|
535
|
+
# example
|
536
|
+
mail.disposition_param('filename')
|
537
|
+
--
|
538
|
+
|
539
|
+
: destinations(default = nil) -> [String]
|
540
|
+
j
|
541
|
+
To、Cc、Bcc すべてのアドレススペック文字列の配列を
|
542
|
+
返します。ひとつも存在しなければ default を返します。
|
543
|
+
e
|
544
|
+
all address specs which are contained in To:, Cc: and
|
545
|
+
Bcc: header fields.
|
546
|
+
.
|
547
|
+
|
548
|
+
: reply_addresses(default = nil) -> [TMail::Address]
|
549
|
+
j
|
550
|
+
返信すべきアドレスを判断し、Address オブジェクトの
|
551
|
+
配列で返します。返信すべきアドレスがみつからなければ
|
552
|
+
DEFAULT を返します。
|
553
|
+
e
|
554
|
+
addresses to we reply to.
|
555
|
+
.
|
556
|
+
|
557
|
+
: error_reply_addresses(default = nil) -> [TMail::Address]
|
558
|
+
j
|
559
|
+
エラーメールを返送すべきアドレスを判断し、Address オブジェクトの
|
560
|
+
配列で返します。返送すべきアドレスがみつからなければ default を返します。
|
561
|
+
e
|
562
|
+
addresses to use when returning error message.
|
563
|
+
.
|
564
|
+
|
565
|
+
j
|
566
|
+
=== ヘッダフィールド直接操作用メソッド
|
567
|
+
e
|
568
|
+
=== Direct Header Handling Methods
|
569
|
+
.
|
570
|
+
|
571
|
+
: clear
|
572
|
+
j
|
573
|
+
ヘッダを全て消去します。
|
574
|
+
e
|
575
|
+
clears all header.
|
576
|
+
.
|
577
|
+
|
578
|
+
: keys -> [TMail::HeaderField]
|
579
|
+
j
|
580
|
+
ヘッダ名の配列を返します。
|
581
|
+
e
|
582
|
+
returns an array of contained header names.
|
583
|
+
.
|
584
|
+
|
585
|
+
: [](name) -> TMail::HeaderField
|
586
|
+
name: String
|
587
|
+
|
588
|
+
j
|
589
|
+
ヘッダ名からヘッダオブジェクトを返します。
|
590
|
+
e
|
591
|
+
returns a header field object corresponding to the case-insensitive
|
592
|
+
key NAME. e.g. mail["To"]
|
593
|
+
.
|
594
|
+
|
595
|
+
: []=(name, field)
|
596
|
+
name: String
|
597
|
+
field: TMail::HeaderField
|
598
|
+
|
599
|
+
j
|
600
|
+
name ヘッダに field を設定します。field は文字列か TMail::HeaderField オブジェクトです。
|
601
|
+
Received など一部のヘッダに対してはさらにその配列も与えることができます。
|
602
|
+
e
|
603
|
+
set NAME header field to FIELD.
|
604
|
+
.
|
605
|
+
|
606
|
+
: delete(name)
|
607
|
+
name: String
|
608
|
+
j
|
609
|
+
name ヘッダを消します。
|
610
|
+
e
|
611
|
+
deletes header corresponding to case-insensitive key NAME.
|
612
|
+
.
|
613
|
+
|
614
|
+
: delete_if {|name, field| .... }
|
615
|
+
name: String
|
616
|
+
field: TMail::HeaderField
|
617
|
+
|
618
|
+
j
|
619
|
+
ヘッダ名とヘッダを与えてブロックを評価し、真ならその関連づけを消します。
|
620
|
+
e
|
621
|
+
evaluates block with a name of header and header field object,
|
622
|
+
and delete the header if block returns true.
|
623
|
+
.
|
624
|
+
|
625
|
+
: each_header {|name, field| .... }
|
626
|
+
: each_pair {|name, field| .... }
|
627
|
+
name: String
|
628
|
+
field: TMail::HeaderField
|
629
|
+
|
630
|
+
j
|
631
|
+
全てのヘッダ名とヘッダオブジェクトに対するくりかえし。
|
632
|
+
e
|
633
|
+
iterates for each header name and its field object.
|
634
|
+
.
|
635
|
+
|
636
|
+
: each_header_name {|name| .... }
|
637
|
+
: each_key {|name| .... }
|
638
|
+
name: String
|
639
|
+
|
640
|
+
j
|
641
|
+
全てのヘッダ名に対するくりかえし。
|
642
|
+
e
|
643
|
+
iterates for each contained header names.
|
644
|
+
.
|
645
|
+
|
646
|
+
: each_field {|field| .... }
|
647
|
+
: each_value {|field| .... }
|
648
|
+
field: TMail::HeaderField
|
649
|
+
|
650
|
+
j
|
651
|
+
全てのヘッダオブジェクトに対するくりかえし。
|
652
|
+
e
|
653
|
+
iterates for each header field objects.
|
654
|
+
|
655
|
+
: orderd_each {|name, field| .... }
|
656
|
+
name: String
|
657
|
+
field: TMail::HeaderField
|
658
|
+
|
659
|
+
j
|
660
|
+
ヘッダの順序指定付きの each_header です。最初に指定したものが指定した
|
661
|
+
順番で並び、その他のヘッダがランダムに続きます。順序は文字列の配列
|
662
|
+
TMail::Mail::FIELD_ORDER で設定してください(詳細はソースコードを参照)。
|
663
|
+
e
|
664
|
+
iterates for each header field objects, in canonical order.
|
665
|
+
.
|
666
|
+
|
667
|
+
: key?(name)
|
668
|
+
name: String
|
669
|
+
|
670
|
+
j
|
671
|
+
name ヘッダがあれば真。
|
672
|
+
e
|
673
|
+
returns true if the mail has NAME header.
|
674
|
+
.
|
675
|
+
|
676
|
+
: value?(field)
|
677
|
+
field: TMail::HeaderField
|
678
|
+
|
679
|
+
j
|
680
|
+
field ヘッダオブジェクトがあれば真。
|
681
|
+
e
|
682
|
+
returns true if the mail has FIELD header field object.
|
683
|
+
.
|
684
|
+
|
685
|
+
: values_at(*names) -> [TMail::HeaderField]
|
686
|
+
: indexes(*names) -> [TMail::HeaderField]
|
687
|
+
: indices(*names) -> [TMail::HeaderField]
|
688
|
+
names: [String]
|
689
|
+
|
690
|
+
j
|
691
|
+
全ての names について fetch した結果の配列を返します。
|
692
|
+
e
|
693
|
+
equals to 'names.collect {|k| mail[k] }'.
|
694
|
+
.
|
695
|
+
|
696
|
+
: values -> [TMail::HeaderField]
|
697
|
+
j
|
698
|
+
登録されている全てのヘッダオブジェクトの配列を返します。
|
699
|
+
e
|
700
|
+
returns an array of all header field object.
|
701
|
+
.
|