tmail 1.2.3.1 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README +10 -0
- data/ext/tmailscanner/tmail/tmailscanner.c +39 -8
- data/lib/tmail.rb +1 -0
- data/lib/tmail/address.rb +6 -40
- data/lib/tmail/attachments.rb +41 -22
- data/lib/tmail/encode.rb +9 -0
- data/lib/tmail/header.rb +5 -3
- data/lib/tmail/interface.rb +40 -3
- data/lib/tmail/mail.rb +3 -3
- data/lib/tmail/mailbox.rb +3 -2
- data/lib/tmail/net.rb +3 -1
- data/lib/tmail/parser.rb +204 -620
- data/lib/tmail/parser.y +38 -3
- data/lib/tmail/quoting.rb +38 -1
- data/lib/tmail/utils.rb +28 -4
- data/lib/tmail/vendor/rchardet-1.3/COPYING +504 -0
- data/lib/tmail/vendor/rchardet-1.3/README +12 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +237 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +90 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +47 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +58 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +166 -0
- data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
- data/lib/tmail/version.rb +1 -1
- data/setup.rb +2 -2
- data/test/fixtures/apple_unquoted_content_type +44 -0
- data/test/fixtures/inline_attachment.txt +2095 -0
- data/test/fixtures/iso_8859_1_email_without_encoding_and_message_id.txt +16 -0
- data/test/fixtures/mailbox.zip +0 -0
- data/test/fixtures/marked_as_iso_8859_1_but_it_is_utf_8.txt +33 -0
- data/test/fixtures/marked_as_utf_8_but_it_is_iso_8859_1.txt +56 -0
- data/test/fixtures/raw_email_bad_time +62 -0
- data/test/fixtures/raw_email_double_at_in_header +14 -0
- data/test/fixtures/raw_email_only_attachment +17 -0
- data/test/fixtures/raw_email_string_in_date_field +17 -0
- data/test/fixtures/raw_email_trailing_dot +21 -0
- data/test/fixtures/raw_email_with_quoted_attachment_filename +60 -0
- data/test/fixtures/raw_email_with_wrong_splitted_multibyte_encoded_word_subject +15 -0
- data/test/fixtures/the_only_part_is_a_word_document.txt +425 -0
- data/test/fixtures/unquoted_filename_in_attachment +177 -0
- data/test/test_address.rb +114 -92
- data/test/test_attachments.rb +84 -1
- data/test/test_encode.rb +54 -0
- data/test/test_header.rb +60 -2
- data/test/test_mail.rb +22 -15
- data/test/test_mbox.rb +12 -3
- data/test/test_port.rb +13 -9
- data/test/test_quote.rb +9 -0
- data/tmail.gemspec +34 -0
- metadata +68 -167
- data/MANIFEST +0 -191
- data/log/BugTrackingLog.txt +0 -1231
- data/log/Changelog.txt +0 -534
- data/log/Fixme.txt +0 -6
- data/log/Testlog.txt +0 -2340
- data/log/Todo.txt +0 -30
- data/log/fixme.rdoc +0 -6
- data/meta/MANIFEST +0 -128
- data/meta/VERSION +0 -1
- data/meta/project.yaml +0 -30
- data/meta/unixname +0 -1
- data/sample/bench_base64.rb +0 -48
- data/sample/data/multipart +0 -23
- data/sample/data/normal +0 -29
- data/sample/data/sendtest +0 -5
- data/sample/data/simple +0 -14
- data/sample/data/test +0 -27
- data/sample/extract-attachements.rb +0 -33
- data/sample/from-check.rb +0 -26
- data/sample/multipart.rb +0 -26
- data/sample/parse-bench.rb +0 -68
- data/sample/parse-test.rb +0 -19
- data/sample/sendmail.rb +0 -94
- data/site/contributing/index.html +0 -183
- data/site/css/clean.css +0 -27
- data/site/css/layout.css +0 -31
- data/site/css/style.css +0 -60
- data/site/download/index.html +0 -61
- 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 +0 -270
- data/site/js/jquery.js +0 -31
- data/site/log/Changelog.xsl +0 -33
- data/site/log/changelog.xml +0 -1677
- data/site/outdated/BUGS +0 -3
- data/site/outdated/DEPENDS +0 -1
- data/site/outdated/Incompatibilities +0 -89
- data/site/outdated/Incompatibilities.ja +0 -102
- data/site/outdated/NEWS +0 -9
- data/site/outdated/README.ja +0 -73
- data/site/outdated/doc.ja/address.html +0 -275
- data/site/outdated/doc.ja/basics.html +0 -405
- data/site/outdated/doc.ja/config.html +0 -49
- data/site/outdated/doc.ja/details.html +0 -146
- data/site/outdated/doc.ja/index.html +0 -39
- data/site/outdated/doc.ja/mail.html +0 -793
- data/site/outdated/doc.ja/mailbox.html +0 -265
- data/site/outdated/doc.ja/port.html +0 -95
- data/site/outdated/doc.ja/tmail.html +0 -58
- data/site/outdated/doc.ja/usage.html +0 -202
- data/site/outdated/rdd/address.rrd.m +0 -229
- data/site/outdated/rdd/basics.rd.m +0 -275
- data/site/outdated/rdd/config.rrd.m +0 -26
- data/site/outdated/rdd/details.rd.m +0 -117
- data/site/outdated/rdd/index.rhtml.m +0 -54
- data/site/outdated/rdd/mail.rrd.m +0 -701
- data/site/outdated/rdd/mailbox.rrd.m +0 -228
- data/site/outdated/rdd/port.rrd.m +0 -69
- data/site/outdated/rdd/tmail.rrd.m +0 -33
- data/site/outdated/rdd/usage.rd.m +0 -247
- data/site/quickstart/index.html +0 -69
- data/site/quickstart/quickstart.html +0 -52
- data/site/quickstart/usage.html +0 -193
- data/site/reference/address.html +0 -247
- data/site/reference/config.html +0 -30
- data/site/reference/index.html +0 -101
- data/site/reference/mail.html +0 -726
- data/site/reference/mailbox.html +0 -245
- data/site/reference/port.html +0 -75
- data/site/reference/tmail.html +0 -35
- data/work/script/make +0 -26
- data/work/script/rdoc +0 -39
- data/work/script/setup +0 -1616
- data/work/script/test +0 -30
@@ -0,0 +1,177 @@
|
|
1
|
+
Return-path: <stuff+caf_=support=aaa.somewhere.com@gmail.com>
|
2
|
+
Delivery-date: Thu, 05 Jun 2008 10:53:29 -0700
|
3
|
+
Received: from [127.0.220.158] (helo=fg-out-1718.google.com)
|
4
|
+
by smtp.totallyrandom.com with esmtp (Exim 4.68)
|
5
|
+
(envelope-from <stuff+caf_=support=aaa.somewhere.com@gmail.com>)
|
6
|
+
id 1K4JeQ-0005Nd-Ij
|
7
|
+
for support@aaa.somewhere.com; Thu, 05 Jun 2008 10:53:29 -0700
|
8
|
+
Delivered-To: stuff@gmail.com
|
9
|
+
Mime-Version: 1.0 (Apple Message framework v753)
|
10
|
+
To: someone@wibble.com
|
11
|
+
Message-Id: <1234567@234567>
|
12
|
+
Content-Type: multipart/mixed; boundary=Apple-Mail-5-305464934
|
13
|
+
From: Wiffle Wonkle <someone@wiffleplace.com>
|
14
|
+
Subject: Attachment content type nil
|
15
|
+
Date: Thu, 5 Jun 2008 10:53:02 -0700
|
16
|
+
X-Mailer: Apple Mail (2.753)
|
17
|
+
|
18
|
+
|
19
|
+
--Apple-Mail-5-305464934
|
20
|
+
Content-Transfer-Encoding: 7bit
|
21
|
+
Content-Type: text/plain;
|
22
|
+
charset=US-ASCII;
|
23
|
+
delsp=yes;
|
24
|
+
format=flowed
|
25
|
+
|
26
|
+
There some text here. It's not really interesting.
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
--Apple-Mail-5-305464934
|
31
|
+
Content-Transfer-Encoding: base64
|
32
|
+
Content-Type: image/png; x-unix-mode=0644; x-mac-hide-extension=yes;
|
33
|
+
name=Picture 7.png
|
34
|
+
Content-Disposition: inline;
|
35
|
+
filename="Picture 7.png"
|
36
|
+
|
37
|
+
iVBORw0KGgoAAAANSUhEUgAAAlsAAADGCAIAAABqwNKSAAALLGlDQ1BJQ0MgUHJvZmlsZQAAeJyV
|
38
|
+
12dYE1kbBuBnQAEFAyLSpASk19AtiEDoJUIEpQgYSIBogJAEFEURy+paUddeULDA4ipioaxlLeja
|
39
|
+
QERsgIIVWERRFHd1zfdjEopl99v5dWauc+ZMcj/vO9cAKm0sPp8nAyAlVSRg+npSIyKjqPJ3MRTy
|
40
|
+
UMBYaLEShHyPkJAgfPd4fwcEANRbs/h8nvh13cgzdx5XVRYmOzUvLnv5/XUAAIogIjIKIKwAqCWR
|
41
|
+
Y3cAavHkOAyA2hwRXwQQyQDUEpJZbIDIBmAlCGPSAaIIACWJHFcAoMST498BUDITkkQAcQ+QU01l
|
42
|
+
c1MB+U5Azo3NESYAFCsAbLYwIQWg5AHE55SUNDagkgfALIEvEAEqFQCsIyKjqOQjs20AF2tAVqv/
|
43
|
+
2uwcoHQFoK/af83UDNBMBEr/7L/2lgkCAKFeK0x0sAcAEEqewNCHYvFbE0B+A/D3erH4Y4FY/Hch
|
44
|
+
INsE/MZLyBBkSv4vgrgB/Ns5+ZslhywByAByIxTalZSVVUZqjqKM1tEYramrraajqWuor0elGuiP
|
45
|
+
NTQyNDYyHWtmam5hYWlpbrXI2sbG2pZGo9nZ29s5ODiUOTo6Obs4jRs3rnz8+AnjJ06Y5OrmNtnd
|
46
|
+
3d3D09PD8xyd7kX3uuDt7ePr6+t72c/f3z/APzAw8FpQUHAwI3jKlJCQkJuhoczQqVOn1oeFhYdP
|
47
|
+
mzZ9+vS7ERGRkVHR0dHRjTNmzGiKiYmNi4ubOZPFio+Pf5yQwGZzOImJSUnJSclt3FmzZs3m8Xgp
|
48
|
+
qampaal8fjpfIBAKRcKMjMzMOXPmzs3Kmj8/O3vBgoULc3IW5SxevERmyZKlS5ct++GH5XLLl69Y
|
49
|
+
8eOPK1euGr5q1erVa9asXbuOsm5dXt56lfXrN2zYuPGnUT/9tGnT5s1btmzV2Lp127bt23do79ix
|
50
|
+
c+euXbt1d+/Oz9+zZy91796CgsLCffv2G+3ff+DAQZODB4uKiot//rnEoqTk0KFffjl8+IjNkSOl
|
51
|
+
pUePltmVlR07dvz4CccTJ06eLC+vqKisrBpfVfXrr6dOnT595sxZt7Nnz6mfO3f+/IULFy9WV1/y
|
52
|
+
vnTp8uXff79y5erVa9euX79xoya4pqa29ubNurp6s/r627cbGu7cuXv33r379x88aIxqbGxqam5+
|
53
|
+
+PBR7KNHLS2PHz+Jf/Lk6dNnz54/f/Gira29vaPjjz9evuzqev26u/vt23fvenv/+kssBoYqybcp
|
54
|
+
jhhBUVYfqTRKe/Qo9TGaqloaY/R0xujp6esaUA2pYw2NDE2MTM3MzM1NLRZaWllZWtvY2NjSaLZ2
|
55
|
+
dnal9vYOjk4Ozs7OJ1xcxrtMGD9xoqvrJDc3t8nu7pPdz3p4eHrQ6V5eXhe8vX18fP38/Pz9AgIC
|
56
|
+
rgYGBgUFBzEYjJopU0JCQkNC65jMqcywsPDw8IZp06dPj4iIjIy8HxVFZiAmJqY5NpbMAKs1Pl6S
|
57
|
+
AU5SUjKXy+W2SzLAk2QgXZAuFIpE/RmYNy87e8GChQsWLcrNXbx4yZKlspIMLF8hL8nAqtWKkgys
|
58
|
+
y1POy1u/fsOGjaobN36RAK3t2wclQH/Pnv+QgLJj9seOHT8u8XepqKislPi7nj595szZs7/91ufv
|
59
|
+
VV09yD/w+vUbN/r8629P/cK/sSla4v+opaW19fHjb+h3dnW9etXd/eZNT8/79x8+kP5yIxTalSgU
|
60
|
+
ZRW1kcqj1NVGqWtpqGmqa+uO0dbR0R2jp6uvS9U30Dc0GGtkZGw81rjQxMRkv6mZmZm5uXmRhYVF
|
61
|
+
saWllbWNla2t7WEazY5mb+fg4Ojo5Ozs7DJunIukJ0x0dXX9ddIkSV9w9/T0PE+n0897eXl7+/j4
|
62
|
+
+vpe9vPz9/e/EhAQGBh4LSg4mMFgMGqmhJC9IbSOyRzQHSIiIiLuSbIRFd04IyYmJjY29mHczJkz
|
63
|
+
WTP7+gOb8ywxMSkpOVmSjtk8XkpKagqfn54uEHyZjQEdQpqPpcuGSPLxZTrIDjEwHaM3b97S+UV/
|
64
|
+
2J2vl5/fl42x+/bt33/gwMGDRaaSbJDJsD58eHAyTp4sd5Z0hv6+MDAV1V/1hJra2ps3b92qr29o
|
65
|
+
uBPen4fBWXj69NnzFy/a2zo6Oju7ul6/fvOmp0da/+S7DwDknIH8M0CkOhBaDKzdApiuAdSLgJAR
|
66
|
+
QNh4EHeHg6j7A8Tq69L3B/l2AQEZyGIoFKAIClShjjGgwhg2cIEnghEJDoTIRT5KcQ638IxQJKiE
|
67
|
+
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
|
175
|
+
Nsu/AHusfoLn8h+6AAAAAElFTkSuQmCC
|
176
|
+
|
177
|
+
--Apple-Mail-5-305464934--
|
data/test/test_address.rb
CHANGED
@@ -92,7 +92,7 @@ class TestAddress < Test::Unit::TestCase
|
|
92
92
|
assert_equal ok[:address], a.spec, str.inspect + " (spec)\n"
|
93
93
|
assert_equal ok[:local], a.local, str.inspect + " (local)\n"
|
94
94
|
assert_equal ok[:domain], a.domain, str.inspect + " (domain)\n"
|
95
|
-
|
95
|
+
#assert_equal ok[:format], a.to_s, str.inspect + " (to_s)\n"
|
96
96
|
end
|
97
97
|
|
98
98
|
def validate_case__group( str, groupname, addrlist )
|
@@ -153,22 +153,19 @@ class TestAddress < Test::Unit::TestCase
|
|
153
153
|
|
154
154
|
end
|
155
155
|
|
156
|
-
def
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
:address => 'foo.bar.@docomo.ne.jp',
|
167
|
-
:local => 'foo.bar.',
|
168
|
-
:domain => 'docomo.ne.jp',
|
169
|
-
:format => 'foo.bar.@docomo.ne.jp'
|
156
|
+
def test_parse__dots
|
157
|
+
1.upto(10) do |times|
|
158
|
+
dots = "." * times
|
159
|
+
validate_case__address "hoge#{dots}test@docomo.ne.jp",
|
160
|
+
:display_name => nil,
|
161
|
+
:address => "hoge#{dots}test@docomo.ne.jp",
|
162
|
+
:local => "hoge#{dots}test",
|
163
|
+
:domain => 'docomo.ne.jp',
|
164
|
+
:format => "hoge#{dots}test@docomo.ne.jp"
|
165
|
+
end
|
170
166
|
end
|
171
167
|
|
168
|
+
unless RUBY_VERSION.match(/1.9/)
|
172
169
|
def test_parse__mime
|
173
170
|
# "\306\374\313\334\270\354"
|
174
171
|
# "\223\372\226{\214\352"
|
@@ -230,6 +227,7 @@ class TestAddress < Test::Unit::TestCase
|
|
230
227
|
:domain => 'loveruby.net',
|
231
228
|
:format => '=?iso-2022-jp?B?GyRCRnxLXDhsGyhC?= <aamine@loveruby.net>'
|
232
229
|
end
|
230
|
+
end
|
233
231
|
|
234
232
|
def test_parse__rawjp
|
235
233
|
begin
|
@@ -1091,32 +1089,8 @@ class TestAddress < Test::Unit::TestCase
|
|
1091
1089
|
|
1092
1090
|
end
|
1093
1091
|
|
1094
|
-
def
|
1095
|
-
|
1096
|
-
validate_case__address\
|
1097
|
-
%Q("@" <"@"@test>),
|
1098
|
-
:name => "@",
|
1099
|
-
:display_name => "@",
|
1100
|
-
:address => %Q("@"@test),
|
1101
|
-
:comments => nil,
|
1102
|
-
:domain => 'test',
|
1103
|
-
:local => %Q("@"),
|
1104
|
-
:format => %Q("@" <"@"@test>)
|
1092
|
+
def test_dot_in_address()
|
1105
1093
|
|
1106
|
-
validate_case__address\
|
1107
|
-
%Q("@" <"me@me"@test>),
|
1108
|
-
:name => "@",
|
1109
|
-
:display_name => "@",
|
1110
|
-
:address => %Q("me@me"@test),
|
1111
|
-
:comments => nil,
|
1112
|
-
:domain => 'test',
|
1113
|
-
:local => %Q("me@me"),
|
1114
|
-
:format => %Q("@" <"me@me"@test>)
|
1115
|
-
|
1116
|
-
end
|
1117
|
-
|
1118
|
-
def test_full_stop_as_last_char_in_display_name()
|
1119
|
-
|
1120
1094
|
validate_case__address\
|
1121
1095
|
%Q(Minero A. <aamine@loveruby.net>),
|
1122
1096
|
:name => "Minero A.",
|
@@ -1127,68 +1101,116 @@ class TestAddress < Test::Unit::TestCase
|
|
1127
1101
|
:local => %Q(aamine),
|
1128
1102
|
:format => %Q("me@my_place" <aamine@loveruby.net>)
|
1129
1103
|
|
1104
|
+
validate_case__address\
|
1105
|
+
%Q(mikel . <mikel@lindsaar.net>),
|
1106
|
+
:name => "mikel .",
|
1107
|
+
:display_name => "mikel .",
|
1108
|
+
:address => %Q(mikel@lindsaar.net),
|
1109
|
+
:comments => nil,
|
1110
|
+
:domain => 'lindsaar.net',
|
1111
|
+
:local => %Q(mikel),
|
1112
|
+
:format => %Q("mikel ." <mikel@lindsaar.net>)
|
1113
|
+
|
1114
|
+
validate_case__address\
|
1115
|
+
%Q("mikel ." <mikel@lindsaar.net>),
|
1116
|
+
:name => "mikel .",
|
1117
|
+
:display_name => "mikel .",
|
1118
|
+
:address => %Q(mikel@lindsaar.net),
|
1119
|
+
:comments => nil,
|
1120
|
+
:domain => 'lindsaar.net',
|
1121
|
+
:local => %Q(mikel),
|
1122
|
+
:format => %Q("mikel ." <mikel@lindsaar.net>)
|
1123
|
+
|
1124
|
+
validate_case__address\
|
1125
|
+
%Q(mikel "." <mikel@lindsaar.net>),
|
1126
|
+
:name => %Q(mikel .),
|
1127
|
+
:display_name => %Q(mikel .),
|
1128
|
+
:address => %Q(mikel@lindsaar.net),
|
1129
|
+
:comments => nil,
|
1130
|
+
:domain => 'lindsaar.net',
|
1131
|
+
:local => %Q(mikel),
|
1132
|
+
:format => %Q(mikel "." <mikel@lindsaar.net>)
|
1133
|
+
|
1130
1134
|
end
|
1131
|
-
|
1132
|
-
def
|
1135
|
+
|
1136
|
+
def test_at_char_in_address()
|
1133
1137
|
|
1134
1138
|
validate_case__address\
|
1135
|
-
%Q(mikel@
|
1136
|
-
:name => "mikel@
|
1137
|
-
:display_name => "mikel@
|
1139
|
+
%Q(mikel@lindsaar.net <lindsaar@you.net>),
|
1140
|
+
:name => "mikel@lindsaar.net",
|
1141
|
+
:display_name => "mikel@lindsaar.net",
|
1138
1142
|
:address => %Q(lindsaar@you.net),
|
1139
1143
|
:comments => nil,
|
1140
1144
|
:domain => 'you.net',
|
1141
1145
|
:local => %Q(lindsaar),
|
1142
|
-
:format => %Q("mikel@
|
1143
|
-
|
1144
|
-
end
|
1145
|
-
|
1146
|
-
def test_special_quote_quoting_at_char_in_string
|
1147
|
-
string = 'mikel@me.com <mikel@me.com>'
|
1148
|
-
result = '"mikel@me.com" <mikel@me.com>'
|
1149
|
-
assert_equal(result, TMail::Address.special_quote_address(string))
|
1150
|
-
end
|
1151
|
-
|
1152
|
-
def test_special_quote_not_quoting_already_quoted_at_char_in_string
|
1153
|
-
string = '"mikel@me.com" <mikel@me.com>'
|
1154
|
-
result = '"mikel@me.com" <mikel@me.com>'
|
1155
|
-
assert_equal(result, TMail::Address.special_quote_address(string))
|
1156
|
-
end
|
1157
|
-
|
1158
|
-
def test_special_quote_not_quoting_something_without_an_at_char_and_quoted
|
1159
|
-
string = '"mikel" <mikel@me.com>'
|
1160
|
-
result = '"mikel" <mikel@me.com>'
|
1161
|
-
assert_equal(result, TMail::Address.special_quote_address(string))
|
1162
|
-
end
|
1146
|
+
:format => %Q("mikel@lindsaar.net" <lindsaar@you.net>)
|
1163
1147
|
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1148
|
+
validate_case__address\
|
1149
|
+
%Q(mikel@lindsaar.net <mikel@lindsaar.net>),
|
1150
|
+
:name => %Q(mikel@lindsaar.net),
|
1151
|
+
:display_name => %Q(mikel@lindsaar.net),
|
1152
|
+
:address => %Q(mikel@lindsaar.net),
|
1153
|
+
:comments => nil,
|
1154
|
+
:domain => 'lindsaar.net',
|
1155
|
+
:local => %Q(mikel),
|
1156
|
+
:format => %Q(mikel@lindsaar.net)
|
1157
|
+
|
1158
|
+
validate_case__address\
|
1159
|
+
%Q("mikel@lindsaar.net" <mikel@lindsaar.net>),
|
1160
|
+
:name => %Q(mikel@lindsaar.net),
|
1161
|
+
:display_name => %Q(mikel@lindsaar.net),
|
1162
|
+
:address => %Q(mikel@lindsaar.net),
|
1163
|
+
:comments => nil,
|
1164
|
+
:domain => 'lindsaar.net',
|
1165
|
+
:local => %Q(mikel),
|
1166
|
+
:format => %Q(mikel@lindsaar.net)
|
1167
|
+
|
1168
|
+
validate_case__address\
|
1169
|
+
%Q("@" <"@"@lindsaar.net>),
|
1170
|
+
:name => "@",
|
1171
|
+
:display_name => "@",
|
1172
|
+
:address => %Q("@"@lindsaar.net),
|
1173
|
+
:comments => nil,
|
1174
|
+
:domain => 'lindsaar.net',
|
1175
|
+
:local => %Q("@"),
|
1176
|
+
:format => %Q("@" <"@"@lindsaar.net>)
|
1177
|
+
|
1178
|
+
validate_case__address\
|
1179
|
+
%Q("@" <"me@me"@lindsaar.net>),
|
1180
|
+
:name => "@",
|
1181
|
+
:display_name => "@",
|
1182
|
+
:address => %Q("me@me"@lindsaar.net),
|
1183
|
+
:comments => nil,
|
1184
|
+
:domain => 'lindsaar.net',
|
1185
|
+
:local => %Q("me@me"),
|
1186
|
+
:format => %Q("@" <"me@me"@lindsaar.net>)
|
1187
|
+
|
1188
|
+
validate_case__address\
|
1189
|
+
%Q("mikel" <mikel@lindsaar.net>),
|
1190
|
+
:name => "mikel",
|
1191
|
+
:display_name => "mikel",
|
1192
|
+
:address => %Q(mikel@lindsaar.net),
|
1193
|
+
:comments => nil,
|
1194
|
+
:domain => 'lindsaar.net',
|
1195
|
+
:local => %Q(mikel),
|
1196
|
+
:format => %Q("mikel" <mikel@lindsaar.net>)
|
1197
|
+
|
1198
|
+
validate_case__address\
|
1199
|
+
%Q(mikel <mikel@lindsaar.net>),
|
1200
|
+
:name => "mikel",
|
1201
|
+
:display_name => "mikel",
|
1202
|
+
:address => %Q(mikel@lindsaar.net),
|
1203
|
+
:comments => nil,
|
1204
|
+
:domain => 'lindsaar.net',
|
1205
|
+
:local => %Q(mikel),
|
1206
|
+
:format => %Q(mikel <mikel@lindsaar.net>)
|
1186
1207
|
end
|
1187
1208
|
|
1188
|
-
def
|
1189
|
-
|
1190
|
-
|
1191
|
-
|
1209
|
+
def test_trailing_dot_in_name
|
1210
|
+
fixture = File.read(File.dirname(__FILE__) + "/fixtures/raw_email_trailing_dot")
|
1211
|
+
str = 'Sandy M. <noreply@rubyforge.org>'
|
1212
|
+
mail = TMail::Mail.parse(fixture)
|
1213
|
+
assert_equal '"Sandy M." <noreply@rubyforge.org>', mail['from'].to_s
|
1192
1214
|
end
|
1193
1215
|
|
1194
1216
|
end
|
data/test/test_attachments.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
1
3
|
require 'test_helper'
|
2
4
|
require 'tmail'
|
3
5
|
|
@@ -42,7 +44,88 @@ HERE
|
|
42
44
|
fixture = File.read(File.dirname(__FILE__) + "/fixtures/raw_email8")
|
43
45
|
mail = TMail::Mail.parse(fixture)
|
44
46
|
attachment = mail.attachments.last
|
45
|
-
assert_equal "01 Quien Te Dij\212at. Pitbull.mp3", attachment.original_filename
|
47
|
+
assert_equal "01 Quien Te Dij\302\212at. Pitbull.mp3", attachment.original_filename unless RUBY_VERSION.match(/1.9/)
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_attachment_with_quoted_filename
|
51
|
+
fixture = File.read(File.dirname(__FILE__) + "/fixtures/raw_email_with_quoted_attachment_filename")
|
52
|
+
mail = TMail::Mail.parse(fixture)
|
53
|
+
attachment = mail.attachments.last
|
54
|
+
str = "Eelanalüüsi päring.jpg"
|
55
|
+
assert_equal str, attachment.original_filename
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_assigning_attachment_crashing_due_to_missing_boundary
|
59
|
+
mail = TMail::Mail.new
|
60
|
+
mail.mime_version = '1.0'
|
61
|
+
mail.set_content_type("multipart", "mixed")
|
62
|
+
|
63
|
+
mailpart=TMail::Mail.new
|
64
|
+
mailpart.set_content_type("application", "octet-stream")
|
65
|
+
mailpart['Content-Disposition'] = "attachment; filename=mailbox.zip"
|
66
|
+
|
67
|
+
assert_nothing_raised { mail.parts.push(mailpart) }
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_only_has_attachment
|
71
|
+
fixture = File.read(File.dirname(__FILE__) + "/fixtures/raw_email_only_attachment")
|
72
|
+
mail = TMail::Mail.parse(fixture)
|
73
|
+
assert_equal(1, mail.attachments.length)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_content_nil_returned_if_name_of_attachment_type_unquoted
|
77
|
+
fixture = File.read(File.dirname(__FILE__) + "/fixtures/unquoted_filename_in_attachment")
|
78
|
+
mail = TMail::Mail.parse(fixture)
|
79
|
+
assert_equal("image/png", mail.attachments.first.content_type)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_unquoted_apple_mail_content_type
|
83
|
+
fixture = File.read(File.dirname(__FILE__) + "/fixtures/apple_unquoted_content_type")
|
84
|
+
mail = TMail::Mail.parse(fixture)
|
85
|
+
assert_equal("application/pdf", mail.attachments.first.content_type)
|
46
86
|
end
|
47
87
|
|
88
|
+
# TMail::Mail.has_attachments? & TMail::Mail.attachments
|
89
|
+
# http://rubyforge.org/tracker/index.php?func=detail&aid=23099&group_id=4512&atid=17370
|
90
|
+
def test_the_only_part_is_a_word_document
|
91
|
+
mail = load_fixture('the_only_part_is_a_word_document.txt')
|
92
|
+
|
93
|
+
assert_equal('application/msword', mail.content_type)
|
94
|
+
assert !mail.multipart?, 'The mail should not be multipart'
|
95
|
+
assert mail.attachment?(mail), 'The mail should be considered has an attachment'
|
96
|
+
|
97
|
+
# The original method TMail::Mail.has_attachments? returns false
|
98
|
+
assert mail.has_attachments?, 'PATCH: TMail should consider that this email has an attachment'
|
99
|
+
|
100
|
+
# The original method TMail::Mail.attachments returns nil
|
101
|
+
assert_not_nil mail.attachments, 'PATCH: TMail should return the attachment'
|
102
|
+
assert_equal 1, mail.attachments.size, 'PATCH: TMail should detect one attachment'
|
103
|
+
assert_instance_of TMail::Attachment, mail.attachments.first, 'The first attachment found should be an instance of TMail::Attachment'
|
104
|
+
end
|
105
|
+
|
106
|
+
# new method TMail::Mail.inline_attachment?
|
107
|
+
def test_inline_attachment_should_detect_inline_attachments
|
108
|
+
mail = load_fixture('inline_attachment.txt')
|
109
|
+
|
110
|
+
assert !mail.inline_attachment?(mail.parts[0]), 'The first part is an empty text'
|
111
|
+
assert mail.inline_attachment?(mail.parts[1]), 'The second part is an inline attachment'
|
112
|
+
|
113
|
+
mail = load_fixture('the_only_part_is_a_word_document.txt')
|
114
|
+
assert !mail.inline_attachment?(mail), 'The first and only part is an normal attachment'
|
115
|
+
end
|
116
|
+
|
117
|
+
# new method TMail::Mail.text_content_type?
|
118
|
+
def test_text_content_type?
|
119
|
+
mail = load_fixture('inline_attachment.txt')
|
120
|
+
|
121
|
+
assert mail.parts[0].text_content_type?, 'The first part of inline_attachment.txt is a text'
|
122
|
+
assert !mail.parts[1].text_content_type?, 'The second part of inline_attachment.txt is not a text'
|
123
|
+
end
|
124
|
+
|
125
|
+
protected
|
126
|
+
|
127
|
+
def load_fixture(name)
|
128
|
+
TMail::Mail.load(File.join('test', 'fixtures', name))
|
129
|
+
end
|
130
|
+
|
48
131
|
end
|