tmail_es 1.2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +83 -0
  3. data/LICENSE +21 -0
  4. data/NOTES +7 -0
  5. data/README +182 -0
  6. data/Rakefile +2 -0
  7. data/ext/Makefile +20 -0
  8. data/ext/tmailscanner/tmail/MANIFEST +4 -0
  9. data/ext/tmailscanner/tmail/depend +1 -0
  10. data/ext/tmailscanner/tmail/extconf.rb +33 -0
  11. data/ext/tmailscanner/tmail/tmailscanner.c +614 -0
  12. data/lib/tmail/Makefile +18 -0
  13. data/lib/tmail/address.rb +392 -0
  14. data/lib/tmail/attachments.rb +65 -0
  15. data/lib/tmail/base64.rb +46 -0
  16. data/lib/tmail/compat.rb +41 -0
  17. data/lib/tmail/config.rb +67 -0
  18. data/lib/tmail/core_extensions.rb +63 -0
  19. data/lib/tmail/encode.rb +590 -0
  20. data/lib/tmail/header.rb +962 -0
  21. data/lib/tmail/index.rb +9 -0
  22. data/lib/tmail/interface.rb +1162 -0
  23. data/lib/tmail/loader.rb +3 -0
  24. data/lib/tmail/mail.rb +578 -0
  25. data/lib/tmail/mailbox.rb +496 -0
  26. data/lib/tmail/main.rb +6 -0
  27. data/lib/tmail/mbox.rb +3 -0
  28. data/lib/tmail/net.rb +250 -0
  29. data/lib/tmail/obsolete.rb +132 -0
  30. data/lib/tmail/parser.rb +1060 -0
  31. data/lib/tmail/parser.y +416 -0
  32. data/lib/tmail/port.rb +379 -0
  33. data/lib/tmail/quoting.rb +164 -0
  34. data/lib/tmail/require_arch.rb +58 -0
  35. data/lib/tmail/scanner.rb +49 -0
  36. data/lib/tmail/scanner_r.rb +261 -0
  37. data/lib/tmail/stringio.rb +280 -0
  38. data/lib/tmail/utils.rb +361 -0
  39. data/lib/tmail/vendor/rchardet-1.3/COPYING +504 -0
  40. data/lib/tmail/vendor/rchardet-1.3/README +12 -0
  41. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb +927 -0
  42. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb +42 -0
  43. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb +238 -0
  44. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb +112 -0
  45. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb +75 -0
  46. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb +64 -0
  47. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb +42 -0
  48. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb +89 -0
  49. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb +244 -0
  50. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb +88 -0
  51. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb +596 -0
  52. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb +42 -0
  53. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb +430 -0
  54. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb +42 -0
  55. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb +474 -0
  56. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb +42 -0
  57. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb +289 -0
  58. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb +570 -0
  59. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb +229 -0
  60. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb +229 -0
  61. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb +330 -0
  62. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb +227 -0
  63. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb +202 -0
  64. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb +226 -0
  65. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb +201 -0
  66. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb +147 -0
  67. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb +89 -0
  68. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb +45 -0
  69. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb +542 -0
  70. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb +124 -0
  71. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb +56 -0
  72. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb +88 -0
  73. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb +167 -0
  74. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb +87 -0
  75. data/lib/tmail/vendor/rchardet-1.3/lib/rchardet.rb +67 -0
  76. data/lib/tmail/version.rb +40 -0
  77. data/lib/tmail.rb +6 -0
  78. data/setup.rb +1482 -0
  79. data/test/extctrl.rb +6 -0
  80. data/test/fixtures/apple_unquoted_content_type +44 -0
  81. data/test/fixtures/inline_attachment.txt +2095 -0
  82. data/test/fixtures/iso_8859_1_email_without_encoding_and_message_id.txt +16 -0
  83. data/test/fixtures/mailbox +414 -0
  84. data/test/fixtures/mailbox.zip +0 -0
  85. data/test/fixtures/mailbox_without_any_from_or_sender +10 -0
  86. data/test/fixtures/mailbox_without_from +11 -0
  87. data/test/fixtures/mailbox_without_return_path +12 -0
  88. data/test/fixtures/marked_as_iso_8859_1_but_it_is_utf_8.txt +33 -0
  89. data/test/fixtures/marked_as_utf_8_but_it_is_iso_8859_1.txt +56 -0
  90. data/test/fixtures/raw_attack_email_with_zero_length_whitespace +29 -0
  91. data/test/fixtures/raw_base64_decoded_string +0 -0
  92. data/test/fixtures/raw_base64_email +83 -0
  93. data/test/fixtures/raw_base64_encoded_string +1 -0
  94. data/test/fixtures/raw_email +14 -0
  95. data/test/fixtures/raw_email10 +20 -0
  96. data/test/fixtures/raw_email11 +34 -0
  97. data/test/fixtures/raw_email12 +32 -0
  98. data/test/fixtures/raw_email13 +29 -0
  99. data/test/fixtures/raw_email2 +114 -0
  100. data/test/fixtures/raw_email3 +70 -0
  101. data/test/fixtures/raw_email4 +59 -0
  102. data/test/fixtures/raw_email5 +19 -0
  103. data/test/fixtures/raw_email6 +20 -0
  104. data/test/fixtures/raw_email7 +66 -0
  105. data/test/fixtures/raw_email8 +47 -0
  106. data/test/fixtures/raw_email9 +28 -0
  107. data/test/fixtures/raw_email_bad_time +62 -0
  108. data/test/fixtures/raw_email_double_at_in_header +14 -0
  109. data/test/fixtures/raw_email_multiple_from +30 -0
  110. data/test/fixtures/raw_email_only_attachment +17 -0
  111. data/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  112. data/test/fixtures/raw_email_reply +32 -0
  113. data/test/fixtures/raw_email_simple +11 -0
  114. data/test/fixtures/raw_email_string_in_date_field +17 -0
  115. data/test/fixtures/raw_email_trailing_dot +21 -0
  116. data/test/fixtures/raw_email_with_bad_date +48 -0
  117. data/test/fixtures/raw_email_with_illegal_boundary +58 -0
  118. data/test/fixtures/raw_email_with_mimepart_without_content_type +94 -0
  119. data/test/fixtures/raw_email_with_multipart_mixed_quoted_boundary +50 -0
  120. data/test/fixtures/raw_email_with_nested_attachment +100 -0
  121. data/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  122. data/test/fixtures/raw_email_with_quoted_attachment_filename +60 -0
  123. data/test/fixtures/raw_email_with_quoted_illegal_boundary +58 -0
  124. data/test/fixtures/raw_email_with_wrong_splitted_multibyte_encoded_word_subject +15 -0
  125. data/test/fixtures/the_only_part_is_a_word_document.txt +425 -0
  126. data/test/fixtures/unquoted_filename_in_attachment +177 -0
  127. data/test/kcode.rb +14 -0
  128. data/test/temp_test_one.rb +46 -0
  129. data/test/test_address.rb +1216 -0
  130. data/test/test_attachments.rb +133 -0
  131. data/test/test_base64.rb +64 -0
  132. data/test/test_encode.rb +139 -0
  133. data/test/test_header.rb +1021 -0
  134. data/test/test_helper.rb +9 -0
  135. data/test/test_mail.rb +756 -0
  136. data/test/test_mbox.rb +184 -0
  137. data/test/test_port.rb +440 -0
  138. data/test/test_quote.rb +107 -0
  139. data/test/test_scanner.rb +209 -0
  140. data/test/test_utils.rb +36 -0
  141. data/tmail_es.gemspec +35 -0
  142. metadata +257 -0
@@ -0,0 +1,107 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ require 'test_helper'
3
+
4
+ class TestQuote < Test::Unit::TestCase
5
+ def test_unquote_quoted_printable
6
+ a ="=?ISO-8859-1?Q?[166417]_Bekr=E6ftelse_fra_Rejsefeber?="
7
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
8
+ expected = "[166417] Bekr\303\246ftelse fra Rejsefeber"
9
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
10
+ assert_equal expected, b
11
+ end
12
+
13
+ def test_unquote_base64
14
+ a ="=?ISO-8859-1?B?WzE2NjQxN10gQmVrcuZmdGVsc2UgZnJhIFJlanNlZmViZXI=?="
15
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
16
+ expected = "[166417] Bekr\303\246ftelse fra Rejsefeber"
17
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
18
+ assert_equal expected, b
19
+ end
20
+
21
+ def test_unquote_without_charset
22
+ a ="[166417]_Bekr=E6ftelse_fra_Rejsefeber"
23
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
24
+ expected = "[166417]_Bekr=E6ftelse_fra_Rejsefeber"
25
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
26
+ assert_equal expected, b
27
+ end
28
+
29
+ def test_unqoute_multiple
30
+ a ="=?utf-8?q?Re=3A_=5B12=5D_=23137=3A_Inkonsistente_verwendung_von_=22Hin?==?utf-8?b?enVmw7xnZW4i?="
31
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
32
+ expected = "Re: [12] #137: Inkonsistente verwendung von \"Hinzuf\303\274gen\""
33
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
34
+ assert_equal expected, b
35
+ end
36
+
37
+ # See section 8 of http://www.faqs.org/rfcs/rfc2047.html
38
+ def test_unquote_multiple_separated_by_whitespace
39
+ a ="=?utf-8?Q?hello?= =?utf-8?Q?there?="
40
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
41
+ expected = "hellothere"
42
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
43
+ assert_equal expected, b
44
+ end
45
+
46
+ def test_unqoute_in_the_middle
47
+ a ="Re: Photos =?ISO-8859-1?Q?Brosch=FCre_Rand?="
48
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'utf-8')
49
+ expected = "Re: Photos Brosch\303\274re Rand"
50
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
51
+ assert_equal expected, b
52
+ end
53
+
54
+ def test_unqoute_iso
55
+ a ="=?ISO-8859-1?Q?Brosch=FCre_Rand?="
56
+ b = TMail::Unquoter.unquote_and_convert_to(a, 'iso-8859-1')
57
+ expected = "Brosch\374re Rand"
58
+ expected.force_encoding 'iso-8859-1' if expected.respond_to? :force_encoding
59
+ assert_equal expected, b
60
+ end
61
+
62
+ def test_quote_multibyte_chars
63
+ original = "\303\246 \303\270 and \303\245"
64
+ unquoted = TMail::Unquoter.unquote_and_convert_to(original, nil)
65
+ original.force_encoding 'utf-8' if original.respond_to? :force_encoding
66
+ unquoted.force_encoding 'utf-8' if unquoted.respond_to? :force_encoding
67
+ assert_equal unquoted, original
68
+ end
69
+
70
+ # test an email that has been created using \r\n newlines, instead of
71
+ # \n newlines.
72
+ def test_email_quoted_with_0d0a
73
+ mail = TMail::Mail.parse(IO.read("#{File.dirname(__FILE__)}/fixtures/raw_email_quoted_with_0d0a"))
74
+ assert_match %r{Elapsed time}, mail.body
75
+ end
76
+
77
+ def test_email_with_partially_quoted_subject
78
+ mail = TMail::Mail.parse(IO.read("#{File.dirname(__FILE__)}/fixtures/raw_email_with_partially_quoted_subject"))
79
+ expected = "Re: Test: \"\346\274\242\345\255\227\" mid \"\346\274\242\345\255\227\" tail"
80
+ expected.force_encoding 'utf-8' if expected.respond_to? :force_encoding
81
+ assert_equal expected, mail.subject
82
+ end
83
+
84
+ def test_decode
85
+ encoded, decoded = expected_base64_strings
86
+ assert_equal decoded, TMail::Base64.decode(encoded)
87
+ end
88
+
89
+ def test_encode
90
+ encoded, decoded = expected_base64_strings
91
+ assert_equal encoded, TMail::Base64.encode(decoded)
92
+ end
93
+
94
+ private
95
+
96
+ def expected_base64_strings
97
+ if RUBY_VERSION < '1.9'
98
+ options = "r"
99
+ else
100
+ options = "r:ASCII-8BIT"
101
+ end
102
+ encoded = File.open("#{File.dirname(__FILE__)}/fixtures/raw_base64_encoded_string", options) {|f| f.read }
103
+ decoded = File.open("#{File.dirname(__FILE__)}/fixtures/raw_base64_decoded_string", options) {|f| f.read }
104
+ [encoded, decoded]
105
+ end
106
+
107
+ end
@@ -0,0 +1,209 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+ require 'test_helper'
3
+ require 'tmail/scanner'
4
+ require 'test/unit'
5
+
6
+ class ScannerTester < Test::Unit::TestCase
7
+ DEBUG = false
8
+
9
+ def do_test( scantype, str, ok, cmtok )
10
+ scanner = TMail::Scanner.new( str, scantype, comments = [] )
11
+ scanner.debug = DEBUG
12
+
13
+ idx = 0
14
+ scanner.scan do |sym, val|
15
+ if sym then
16
+ assert_equal ok.shift, [sym, val], "index=#{idx}"
17
+ else
18
+ assert_equal [false, '$'], [sym, val], "$end (index=#{idx})"
19
+ end
20
+ idx += 1
21
+ end
22
+ assert_equal [], ok
23
+
24
+ comments.each_with_index do |val, i|
25
+ assert_equal cmtok.shift, val, "index=#{i}"
26
+ end
27
+ end
28
+
29
+ def test_atommode
30
+ do_test :ADDRESS,
31
+ 'Capital CAPITAL word from id by with a0000',
32
+ [
33
+ [:ATOM, 'Capital'],
34
+ [:ATOM, 'CAPITAL'],
35
+ [:ATOM, 'word'],
36
+ [:ATOM, 'from'],
37
+ [:ATOM, 'id'],
38
+ [:ATOM, 'by'],
39
+ [:ATOM, 'with'],
40
+ [:ATOM, 'a0000']
41
+ ],
42
+ []
43
+
44
+ do_test :ADDRESS,
45
+ '(comment) (nested (comment) (again)) (a(b(c(d(e)))))',
46
+ [
47
+ ],
48
+ [
49
+ 'comment',
50
+ 'nested (comment) (again)',
51
+ 'a(b(c(d(e))))'
52
+ ]
53
+
54
+ do_test :ADDRESS,
55
+ '=?iso-2022-jp?B?axaxax?=',
56
+ [
57
+ [:ATOM, '=?iso-2022-jp?B?axaxax?=']
58
+ ],
59
+ []
60
+
61
+ word = 'abcdefghijklmnopqrstuvwxyz' +
62
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
63
+ '0123456789' +
64
+ %q[_#!$%&`'*+-{|}~^/=?]
65
+ do_test :ADDRESS, word,
66
+ [
67
+ [:ATOM, word]
68
+ ],
69
+ []
70
+
71
+ do_test :ADDRESS,
72
+ " \t\t\r\n \n\r\n \r \n atom",
73
+ [
74
+ [:ATOM, 'atom']
75
+ ],
76
+ []
77
+ end
78
+
79
+ def test_tokenmode
80
+ do_test :CTYPE,
81
+ 'text/html; charset=iso-2022-jp',
82
+ [
83
+ [:TOKEN, 'text'],
84
+ ['/' , '/'],
85
+ [:TOKEN, 'html'],
86
+ [';' , ';'],
87
+ [:TOKEN, 'charset'],
88
+ ['=' , '='],
89
+ [:TOKEN, 'iso-2022-jp']
90
+ ],
91
+ []
92
+
93
+ do_test :CTYPE,
94
+ 'Text/Plain; Charset=ISO-2022-JP',
95
+ [
96
+ [:TOKEN, 'Text'],
97
+ ['/' , '/'],
98
+ [:TOKEN, 'Plain'],
99
+ [';' , ';'],
100
+ [:TOKEN, 'Charset'],
101
+ ['=' , '='],
102
+ [:TOKEN, 'ISO-2022-JP'],
103
+ ],
104
+ []
105
+
106
+ do_test :CTYPE,
107
+ 'm_m/s_s; k_k=v_v',
108
+ [
109
+ [:TOKEN, 'm_m'],
110
+ ['/' , '/'],
111
+ [:TOKEN, 's_s'],
112
+ [';' , ';'],
113
+ [:TOKEN, 'k_k'],
114
+ ['=' , '='],
115
+ [:TOKEN, 'v_v'],
116
+ ],
117
+ []
118
+
119
+ word = 'abcdefghijklmnopqrstuvwxyz' +
120
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
121
+ '0123456789' +
122
+ %q[_#!$%&`'*+-{|}~^.]
123
+ do_test :CTYPE, word,
124
+ [
125
+ [:TOKEN, word]
126
+ ],
127
+ []
128
+ end
129
+
130
+ def test_received
131
+ do_test :RECEIVED,
132
+ 'from From by By via Via with With id Id for For',
133
+ [
134
+ [:FROM, 'from'],
135
+ [:FROM, 'From'],
136
+ [:BY, 'by'],
137
+ [:BY, 'By'],
138
+ [:VIA, 'via'],
139
+ [:VIA, 'Via'],
140
+ [:WITH, 'with'],
141
+ [:WITH, 'With'],
142
+ [:ID, 'id'],
143
+ [:ID, 'Id'],
144
+ [:FOR, 'for'],
145
+ [:FOR, 'For']
146
+ ],
147
+ []
148
+
149
+ str = <<EOS
150
+ from hoyogw.netlab.co.jp (daemon@hoyogw.netlab.co.jp [202.218.249.220])
151
+ by serv1.u-netsurf.ne.jp (8.8.8/3.6W-2.66(99/03/09))
152
+ with ESMTP id RAA10692 for <aamine@dp.u-netsurf.ne.jp>;
153
+ Thu, 18 Mar 1999 17:35:23 +0900 (JST)
154
+ EOS
155
+ ok = [
156
+ [ :FROM , 'from' ],
157
+ [ :ATOM , 'hoyogw' ],
158
+ [ '.' , '.' ],
159
+ [ :ATOM , 'netlab' ],
160
+ [ '.' , '.' ],
161
+ [ :ATOM , 'co' ],
162
+ [ '.' , '.' ],
163
+ [ :ATOM , 'jp' ],
164
+ [ :BY , 'by' ],
165
+ [ :ATOM , 'serv1' ],
166
+ [ '.' , '.' ],
167
+ [ :ATOM , 'u-netsurf' ],
168
+ [ '.' , '.' ],
169
+ [ :ATOM , 'ne' ],
170
+ [ '.' , '.' ],
171
+ [ :ATOM , 'jp' ],
172
+ [ :WITH , 'with' ],
173
+ [ :ATOM , 'ESMTP' ],
174
+ [ :ID , 'id' ],
175
+ [ :ATOM , 'RAA10692' ],
176
+ [ :FOR , 'for' ],
177
+ [ '<' , '<' ],
178
+ [ :ATOM , 'aamine' ],
179
+ [ '@' , '@' ],
180
+ [ :ATOM , 'dp' ],
181
+ [ '.' , '.' ],
182
+ [ :ATOM , 'u-netsurf' ],
183
+ [ '.' , '.' ],
184
+ [ :ATOM , 'ne' ],
185
+ [ '.' , '.' ],
186
+ [ :ATOM , 'jp' ],
187
+ [ '>' , '>' ],
188
+ [ ';' , ';' ],
189
+ [ :ATOM , 'Thu' ],
190
+ [ ',' , ',' ],
191
+ [ :DIGIT, '18' ],
192
+ [ :ATOM , 'Mar' ],
193
+ [ :DIGIT, '1999' ],
194
+ [ :DIGIT, '17' ],
195
+ [ ':' , ':' ],
196
+ [ :DIGIT, '35' ],
197
+ [ ':' , ':' ],
198
+ [ :DIGIT, '23' ],
199
+ [ :ATOM , '+0900' ]
200
+ ]
201
+ cmtok = [
202
+ 'daemon@hoyogw.netlab.co.jp [202.218.249.220]',
203
+ '8.8.8/3.6W-2.66(99/03/09)',
204
+ 'JST'
205
+ ]
206
+
207
+ do_test :RECEIVED, str, ok, cmtok
208
+ end
209
+ end
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+ require 'tmail'
3
+ require 'tmail/utils'
4
+
5
+ class TestUtils < Test::Unit::TestCase
6
+
7
+ include TMail::TextUtils
8
+
9
+ def _test_new_boundary
10
+ a = new_boundary()
11
+ b = new_boundary()
12
+ c = new_boundary()
13
+ assert_instance_of String, a
14
+ assert_instance_of String, b
15
+ assert_instance_of String, c
16
+ assert(a != b)
17
+ assert(b != c)
18
+ assert(c != a)
19
+ end
20
+
21
+ def test_unquote
22
+ mail = TMail::Mail.new
23
+ assert_equal('Hello', mail.unquote('"Hello"'))
24
+ end
25
+
26
+ def test_unquote_without_quotes
27
+ mail = TMail::Mail.new
28
+ assert_equal('Hello', mail.unquote('Hello'))
29
+ end
30
+
31
+ def test_unquote_with_nil
32
+ mail = TMail::Mail.new
33
+ assert_equal(nil, mail.unquote(nil))
34
+ end
35
+
36
+ end
data/tmail_es.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "tmail_es"
5
+ s.version = "1.2.7.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Mikel Lindsaar <raasdnil AT gmail.com>"]
9
+ s.date = %q{2010-01-06}
10
+ s.description = %q{TMail is a Ruby-based mail handler. It allows you to compose standards compliant emails in a very Ruby-way. EuroServizi patch.}
11
+ s.email = %q{raasdnil AT gmail.com}
12
+ s.extensions = ["ext/tmailscanner/tmail/extconf.rb"]
13
+ s.extra_rdoc_files = ["README", "CHANGES", "LICENSE", "NOTES", "Rakefile"]
14
+ s.files = %w(README Rakefile NOTES CHANGES LICENSE setup.rb tmail_es.gemspec) +
15
+ Dir.glob("lib/**/*") + Dir.glob("ext/**/*")
16
+ s.has_rdoc = true
17
+ s.homepage = "https://github.com/EuroServizi/tmail_es"
18
+ #s.homepage = %q{http://tmail.rubyforge.org}
19
+ s.rdoc_options = ["--inline-source", "--title", "TMail", "--main", "README"]
20
+ s.require_paths = ["lib", "ext/tmailscanner"]
21
+ s.rubyforge_project = %q{tmail}
22
+ s.rubygems_version = %q{1.3.1}
23
+ s.summary = %q{Ruby Mail Handler}
24
+ s.test_files = Dir.glob("test/**/*")
25
+
26
+ if s.respond_to? :specification_version then
27
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
28
+ s.specification_version = 2
29
+
30
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
31
+ else
32
+ end
33
+ else
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,257 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tmail_es
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.7.2
5
+ platform: ruby
6
+ authors:
7
+ - Mikel Lindsaar <raasdnil AT gmail.com>
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2010-01-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: TMail is a Ruby-based mail handler. It allows you to compose standards
14
+ compliant emails in a very Ruby-way. EuroServizi patch.
15
+ email: raasdnil AT gmail.com
16
+ executables: []
17
+ extensions:
18
+ - ext/tmailscanner/tmail/extconf.rb
19
+ extra_rdoc_files:
20
+ - README
21
+ - CHANGES
22
+ - LICENSE
23
+ - NOTES
24
+ - Rakefile
25
+ files:
26
+ - CHANGES
27
+ - LICENSE
28
+ - NOTES
29
+ - README
30
+ - Rakefile
31
+ - ext/Makefile
32
+ - ext/tmailscanner/tmail/MANIFEST
33
+ - ext/tmailscanner/tmail/depend
34
+ - ext/tmailscanner/tmail/extconf.rb
35
+ - ext/tmailscanner/tmail/tmailscanner.c
36
+ - lib/tmail.rb
37
+ - lib/tmail/Makefile
38
+ - lib/tmail/address.rb
39
+ - lib/tmail/attachments.rb
40
+ - lib/tmail/base64.rb
41
+ - lib/tmail/compat.rb
42
+ - lib/tmail/config.rb
43
+ - lib/tmail/core_extensions.rb
44
+ - lib/tmail/encode.rb
45
+ - lib/tmail/header.rb
46
+ - lib/tmail/index.rb
47
+ - lib/tmail/interface.rb
48
+ - lib/tmail/loader.rb
49
+ - lib/tmail/mail.rb
50
+ - lib/tmail/mailbox.rb
51
+ - lib/tmail/main.rb
52
+ - lib/tmail/mbox.rb
53
+ - lib/tmail/net.rb
54
+ - lib/tmail/obsolete.rb
55
+ - lib/tmail/parser.rb
56
+ - lib/tmail/parser.y
57
+ - lib/tmail/port.rb
58
+ - lib/tmail/quoting.rb
59
+ - lib/tmail/require_arch.rb
60
+ - lib/tmail/scanner.rb
61
+ - lib/tmail/scanner_r.rb
62
+ - lib/tmail/stringio.rb
63
+ - lib/tmail/utils.rb
64
+ - lib/tmail/vendor/rchardet-1.3/COPYING
65
+ - lib/tmail/vendor/rchardet-1.3/README
66
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet.rb
67
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5freq.rb
68
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/big5prober.rb
69
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/chardistribution.rb
70
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetgroupprober.rb
71
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/charsetprober.rb
72
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/codingstatemachine.rb
73
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/constants.rb
74
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/escprober.rb
75
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/escsm.rb
76
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/eucjpprober.rb
77
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrfreq.rb
78
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/euckrprober.rb
79
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwfreq.rb
80
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/euctwprober.rb
81
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312freq.rb
82
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/gb2312prober.rb
83
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/hebrewprober.rb
84
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/jisfreq.rb
85
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/jpcntx.rb
86
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/langbulgarianmodel.rb
87
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/langcyrillicmodel.rb
88
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/langgreekmodel.rb
89
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhebrewmodel.rb
90
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/langhungarianmodel.rb
91
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/langthaimodel.rb
92
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/latin1prober.rb
93
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcharsetprober.rb
94
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcsgroupprober.rb
95
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/mbcssm.rb
96
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcharsetprober.rb
97
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/sbcsgroupprober.rb
98
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/sjisprober.rb
99
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/universaldetector.rb
100
+ - lib/tmail/vendor/rchardet-1.3/lib/rchardet/utf8prober.rb
101
+ - lib/tmail/version.rb
102
+ - setup.rb
103
+ - test/extctrl.rb
104
+ - test/fixtures/apple_unquoted_content_type
105
+ - test/fixtures/inline_attachment.txt
106
+ - test/fixtures/iso_8859_1_email_without_encoding_and_message_id.txt
107
+ - test/fixtures/mailbox
108
+ - test/fixtures/mailbox.zip
109
+ - test/fixtures/mailbox_without_any_from_or_sender
110
+ - test/fixtures/mailbox_without_from
111
+ - test/fixtures/mailbox_without_return_path
112
+ - test/fixtures/marked_as_iso_8859_1_but_it_is_utf_8.txt
113
+ - test/fixtures/marked_as_utf_8_but_it_is_iso_8859_1.txt
114
+ - test/fixtures/raw_attack_email_with_zero_length_whitespace
115
+ - test/fixtures/raw_base64_decoded_string
116
+ - test/fixtures/raw_base64_email
117
+ - test/fixtures/raw_base64_encoded_string
118
+ - test/fixtures/raw_email
119
+ - test/fixtures/raw_email10
120
+ - test/fixtures/raw_email11
121
+ - test/fixtures/raw_email12
122
+ - test/fixtures/raw_email13
123
+ - test/fixtures/raw_email2
124
+ - test/fixtures/raw_email3
125
+ - test/fixtures/raw_email4
126
+ - test/fixtures/raw_email5
127
+ - test/fixtures/raw_email6
128
+ - test/fixtures/raw_email7
129
+ - test/fixtures/raw_email8
130
+ - test/fixtures/raw_email9
131
+ - test/fixtures/raw_email_bad_time
132
+ - test/fixtures/raw_email_double_at_in_header
133
+ - test/fixtures/raw_email_multiple_from
134
+ - test/fixtures/raw_email_only_attachment
135
+ - test/fixtures/raw_email_quoted_with_0d0a
136
+ - test/fixtures/raw_email_reply
137
+ - test/fixtures/raw_email_simple
138
+ - test/fixtures/raw_email_string_in_date_field
139
+ - test/fixtures/raw_email_trailing_dot
140
+ - test/fixtures/raw_email_with_bad_date
141
+ - test/fixtures/raw_email_with_illegal_boundary
142
+ - test/fixtures/raw_email_with_mimepart_without_content_type
143
+ - test/fixtures/raw_email_with_multipart_mixed_quoted_boundary
144
+ - test/fixtures/raw_email_with_nested_attachment
145
+ - test/fixtures/raw_email_with_partially_quoted_subject
146
+ - test/fixtures/raw_email_with_quoted_attachment_filename
147
+ - test/fixtures/raw_email_with_quoted_illegal_boundary
148
+ - test/fixtures/raw_email_with_wrong_splitted_multibyte_encoded_word_subject
149
+ - test/fixtures/the_only_part_is_a_word_document.txt
150
+ - test/fixtures/unquoted_filename_in_attachment
151
+ - test/kcode.rb
152
+ - test/temp_test_one.rb
153
+ - test/test_address.rb
154
+ - test/test_attachments.rb
155
+ - test/test_base64.rb
156
+ - test/test_encode.rb
157
+ - test/test_header.rb
158
+ - test/test_helper.rb
159
+ - test/test_mail.rb
160
+ - test/test_mbox.rb
161
+ - test/test_port.rb
162
+ - test/test_quote.rb
163
+ - test/test_scanner.rb
164
+ - test/test_utils.rb
165
+ - tmail_es.gemspec
166
+ homepage: https://github.com/EuroServizi/tmail_es
167
+ licenses: []
168
+ metadata: {}
169
+ post_install_message:
170
+ rdoc_options:
171
+ - "--inline-source"
172
+ - "--title"
173
+ - TMail
174
+ - "--main"
175
+ - README
176
+ require_paths:
177
+ - lib
178
+ - ext/tmailscanner
179
+ required_ruby_version: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: '0'
189
+ requirements: []
190
+ rubyforge_project: tmail
191
+ rubygems_version: 2.4.8
192
+ signing_key:
193
+ specification_version: 2
194
+ summary: Ruby Mail Handler
195
+ test_files:
196
+ - test/test_base64.rb
197
+ - test/test_address.rb
198
+ - test/test_encode.rb
199
+ - test/test_port.rb
200
+ - test/test_utils.rb
201
+ - test/test_scanner.rb
202
+ - test/extctrl.rb
203
+ - test/kcode.rb
204
+ - test/test_attachments.rb
205
+ - test/test_header.rb
206
+ - test/test_helper.rb
207
+ - test/temp_test_one.rb
208
+ - test/test_mbox.rb
209
+ - test/test_quote.rb
210
+ - test/fixtures/raw_email_with_bad_date
211
+ - test/fixtures/raw_email2
212
+ - test/fixtures/raw_email_with_quoted_illegal_boundary
213
+ - test/fixtures/raw_attack_email_with_zero_length_whitespace
214
+ - test/fixtures/raw_email_multiple_from
215
+ - test/fixtures/raw_email_with_nested_attachment
216
+ - test/fixtures/raw_email_reply
217
+ - test/fixtures/the_only_part_is_a_word_document.txt
218
+ - test/fixtures/raw_email9
219
+ - test/fixtures/raw_email8
220
+ - test/fixtures/raw_email6
221
+ - test/fixtures/mailbox.zip
222
+ - test/fixtures/mailbox_without_from
223
+ - test/fixtures/raw_email4
224
+ - test/fixtures/inline_attachment.txt
225
+ - test/fixtures/raw_email_trailing_dot
226
+ - test/fixtures/raw_email12
227
+ - test/fixtures/iso_8859_1_email_without_encoding_and_message_id.txt
228
+ - test/fixtures/unquoted_filename_in_attachment
229
+ - test/fixtures/mailbox_without_any_from_or_sender
230
+ - test/fixtures/raw_email13
231
+ - test/fixtures/raw_email10
232
+ - test/fixtures/marked_as_iso_8859_1_but_it_is_utf_8.txt
233
+ - test/fixtures/mailbox
234
+ - test/fixtures/raw_email_simple
235
+ - test/fixtures/raw_email7
236
+ - test/fixtures/raw_base64_encoded_string
237
+ - test/fixtures/mailbox_without_return_path
238
+ - test/fixtures/raw_email_with_mimepart_without_content_type
239
+ - test/fixtures/raw_email_with_multipart_mixed_quoted_boundary
240
+ - test/fixtures/raw_email5
241
+ - test/fixtures/raw_email_with_illegal_boundary
242
+ - test/fixtures/raw_email_bad_time
243
+ - test/fixtures/raw_email_with_wrong_splitted_multibyte_encoded_word_subject
244
+ - test/fixtures/raw_base64_email
245
+ - test/fixtures/raw_email_only_attachment
246
+ - test/fixtures/raw_email
247
+ - test/fixtures/marked_as_utf_8_but_it_is_iso_8859_1.txt
248
+ - test/fixtures/apple_unquoted_content_type
249
+ - test/fixtures/raw_email_with_quoted_attachment_filename
250
+ - test/fixtures/raw_email_with_partially_quoted_subject
251
+ - test/fixtures/raw_email_double_at_in_header
252
+ - test/fixtures/raw_email_string_in_date_field
253
+ - test/fixtures/raw_email_quoted_with_0d0a
254
+ - test/fixtures/raw_base64_decoded_string
255
+ - test/fixtures/raw_email11
256
+ - test/fixtures/raw_email3
257
+ - test/test_mail.rb