mail 2.2.5 → 2.2.19

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 (152) hide show
  1. data/CHANGELOG.rdoc +163 -7
  2. data/README.rdoc +56 -65
  3. data/Rakefile +31 -6
  4. data/lib/VERSION +2 -2
  5. data/lib/mail/attachments_list.rb +4 -4
  6. data/lib/mail/body.rb +6 -2
  7. data/lib/mail/configuration.rb +7 -1
  8. data/lib/mail/core_extensions/shellwords.rb +55 -0
  9. data/lib/mail/core_extensions/smtp.rb +24 -0
  10. data/lib/mail/elements/address.rb +6 -6
  11. data/lib/mail/elements/content_disposition_element.rb +1 -1
  12. data/lib/mail/elements/content_type_element.rb +2 -2
  13. data/lib/mail/encodings.rb +55 -57
  14. data/lib/mail/field.rb +2 -1
  15. data/lib/mail/field_list.rb +1 -1
  16. data/lib/mail/fields/common/common_field.rb +10 -9
  17. data/lib/mail/fields/common/common_message_id.rb +6 -5
  18. data/lib/mail/fields/common/parameter_hash.rb +14 -4
  19. data/lib/mail/fields/content_disposition_field.rb +1 -1
  20. data/lib/mail/fields/content_type_field.rb +41 -28
  21. data/lib/mail/fields/date_field.rb +3 -1
  22. data/lib/mail/fields/received_field.rb +11 -3
  23. data/lib/mail/fields/resent_date_field.rb +1 -1
  24. data/lib/mail/fields/return_path_field.rb +1 -0
  25. data/lib/mail/fields/unstructured_field.rb +4 -1
  26. data/lib/mail/header.rb +8 -5
  27. data/lib/mail/mail.rb +71 -57
  28. data/lib/mail/message.rb +518 -391
  29. data/lib/mail/network/delivery_methods/sendmail.rb +15 -15
  30. data/lib/mail/network/delivery_methods/smtp.rb +33 -6
  31. data/lib/mail/network/delivery_methods/smtp_connection.rb +74 -0
  32. data/lib/mail/network/retriever_methods/base.rb +63 -0
  33. data/lib/mail/network/retriever_methods/imap.rb +147 -7
  34. data/lib/mail/network/retriever_methods/pop3.rb +25 -44
  35. data/lib/mail/network/retriever_methods/test_retriever.rb +40 -0
  36. data/lib/mail/network.rb +4 -0
  37. data/lib/mail/parsers/address_lists.rb +2 -2
  38. data/lib/mail/parsers/address_lists.treetop +2 -2
  39. data/lib/mail/parsers/content_disposition.rb +166 -18
  40. data/lib/mail/parsers/content_disposition.treetop +1 -1
  41. data/lib/mail/parsers/content_type.rb +477 -49
  42. data/lib/mail/parsers/content_type.treetop +12 -2
  43. data/lib/mail/parsers/rfc2822.rb +58 -35
  44. data/lib/mail/parsers/rfc2822.treetop +2 -2
  45. data/lib/mail/part.rb +2 -2
  46. data/lib/mail/parts_list.rb +16 -8
  47. data/lib/mail/patterns.rb +7 -2
  48. data/lib/mail/utilities.rb +31 -1
  49. data/lib/mail/version.rb +10 -8
  50. data/lib/mail/version_specific/ruby_1_8.rb +2 -2
  51. data/lib/mail/version_specific/ruby_1_9.rb +29 -8
  52. data/lib/mail.rb +8 -4
  53. metadata +44 -110
  54. data/lib/mail/attachments_list.rbc +0 -1983
  55. data/lib/mail/body.rbc +0 -3809
  56. data/lib/mail/configuration.rbc +0 -1112
  57. data/lib/mail/core_extensions/nil.rbc +0 -244
  58. data/lib/mail/core_extensions/string.rbc +0 -0
  59. data/lib/mail/elements/address.rbc +0 -4112
  60. data/lib/mail/elements/address_list.rbc +0 -1309
  61. data/lib/mail/elements/content_disposition_element.rbc +0 -701
  62. data/lib/mail/elements/content_location_element.rbc +0 -573
  63. data/lib/mail/elements/content_transfer_encoding_element.rbc +0 -535
  64. data/lib/mail/elements/content_type_element.rbc +0 -786
  65. data/lib/mail/elements/date_time_element.rbc +0 -583
  66. data/lib/mail/elements/envelope_from_element.rbc +0 -771
  67. data/lib/mail/elements/message_ids_element.rbc +0 -740
  68. data/lib/mail/elements/mime_version_element.rbc +0 -583
  69. data/lib/mail/elements/phrase_list.rbc +0 -562
  70. data/lib/mail/elements/received_element.rbc +0 -725
  71. data/lib/mail/elements.rbc +0 -362
  72. data/lib/mail/encodings/7bit.rbc +0 -538
  73. data/lib/mail/encodings/8bit.rbc +0 -541
  74. data/lib/mail/encodings/base64.rbc +0 -629
  75. data/lib/mail/encodings/binary.rbc +0 -529
  76. data/lib/mail/encodings/quoted_printable.rbc +0 -766
  77. data/lib/mail/encodings/transfer_encoding.rbc +0 -1134
  78. data/lib/mail/encodings.rbc +0 -0
  79. data/lib/mail/envelope.rbc +0 -719
  80. data/lib/mail/field.rbc +0 -4708
  81. data/lib/mail/field_list.rbc +0 -518
  82. data/lib/mail/fields/bcc_field.rbc +0 -564
  83. data/lib/mail/fields/cc_field.rbc +0 -579
  84. data/lib/mail/fields/comments_field.rbc +0 -383
  85. data/lib/mail/fields/common/address_container.rbc +0 -363
  86. data/lib/mail/fields/common/common_address.rbc +0 -3550
  87. data/lib/mail/fields/common/common_date.rbc +0 -908
  88. data/lib/mail/fields/common/common_field.rbc +0 -973
  89. data/lib/mail/fields/common/common_message_id.rbc +0 -1051
  90. data/lib/mail/fields/common/parameter_hash.rbc +0 -1335
  91. data/lib/mail/fields/content_description_field.rbc +0 -396
  92. data/lib/mail/fields/content_disposition_field.rbc +0 -1440
  93. data/lib/mail/fields/content_id_field.rbc +0 -1236
  94. data/lib/mail/fields/content_location_field.rbc +0 -892
  95. data/lib/mail/fields/content_transfer_encoding_field.rbc +0 -1184
  96. data/lib/mail/fields/content_type_field.rbc +0 -3958
  97. data/lib/mail/fields/date_field.rbc +0 -712
  98. data/lib/mail/fields/from_field.rbc +0 -579
  99. data/lib/mail/fields/in_reply_to_field.rbc +0 -579
  100. data/lib/mail/fields/keywords_field.rbc +0 -979
  101. data/lib/mail/fields/message_id_field.rbc +0 -1008
  102. data/lib/mail/fields/mime_version_field.rbc +0 -1107
  103. data/lib/mail/fields/optional_field.rbc +0 -153
  104. data/lib/mail/fields/received_field.rbc +0 -1137
  105. data/lib/mail/fields/references_field.rbc +0 -574
  106. data/lib/mail/fields/reply_to_field.rbc +0 -579
  107. data/lib/mail/fields/resent_bcc_field.rbc +0 -579
  108. data/lib/mail/fields/resent_cc_field.rbc +0 -579
  109. data/lib/mail/fields/resent_date_field.rbc +0 -656
  110. data/lib/mail/fields/resent_from_field.rbc +0 -579
  111. data/lib/mail/fields/resent_message_id_field.rbc +0 -639
  112. data/lib/mail/fields/resent_sender_field.rbc +0 -731
  113. data/lib/mail/fields/resent_to_field.rbc +0 -579
  114. data/lib/mail/fields/return_path_field.rbc +0 -737
  115. data/lib/mail/fields/sender_field.rbc +0 -799
  116. data/lib/mail/fields/structured_field.rbc +0 -671
  117. data/lib/mail/fields/subject_field.rbc +0 -378
  118. data/lib/mail/fields/to_field.rbc +0 -579
  119. data/lib/mail/fields/unstructured_field.rbc +0 -2292
  120. data/lib/mail/fields.rbc +0 -782
  121. data/lib/mail/header.rbc +0 -3720
  122. data/lib/mail/mail.rbc +0 -2168
  123. data/lib/mail/message.rbc +0 -19034
  124. data/lib/mail/network/delivery_methods/file_delivery.rbc +0 -722
  125. data/lib/mail/network/delivery_methods/sendmail.rbc +0 -800
  126. data/lib/mail/network/delivery_methods/smtp.rbc +0 -1081
  127. data/lib/mail/network/delivery_methods/test_mailer.rbc +0 -552
  128. data/lib/mail/network/retriever_methods/pop3.rbc +0 -2447
  129. data/lib/mail/network.rbc +0 -236
  130. data/lib/mail/parsers/address_lists.rbc +0 -1307
  131. data/lib/mail/parsers/content_disposition.rbc +0 -5968
  132. data/lib/mail/parsers/content_location.rbc +0 -2166
  133. data/lib/mail/parsers/content_transfer_encoding.rbc +0 -2591
  134. data/lib/mail/parsers/content_type.rbc +0 -7949
  135. data/lib/mail/parsers/date_time.rbc +0 -1836
  136. data/lib/mail/parsers/envelope_from.rbc +0 -3106
  137. data/lib/mail/parsers/message_ids.rbc +0 -989
  138. data/lib/mail/parsers/mime_version.rbc +0 -2254
  139. data/lib/mail/parsers/phrase_lists.rbc +0 -989
  140. data/lib/mail/parsers/received.rbc +0 -1267
  141. data/lib/mail/parsers/rfc2045.rbc +0 -5614
  142. data/lib/mail/parsers/rfc2822.rbc +0 -74848
  143. data/lib/mail/parsers/rfc2822_obsolete.rbc +0 -55220
  144. data/lib/mail/part.rbc +0 -2314
  145. data/lib/mail/parts_list.rbc +0 -832
  146. data/lib/mail/patterns.rbc +0 -0
  147. data/lib/mail/utilities.rbc +0 -2377
  148. data/lib/mail/version.rbc +0 -450
  149. data/lib/mail/version_specific/ruby_1_8.rbc +0 -2496
  150. data/lib/mail.rbc +0 -1151
  151. data/lib/tasks/corpus.rake.compiled.rbc +0 -2195
  152. data/lib/tasks/treetop.rake.compiled.rbc +0 -297
@@ -113,6 +113,12 @@ module Mail
113
113
  r0
114
114
  end
115
115
 
116
+ module DispositionType0
117
+ end
118
+
119
+ module DispositionType1
120
+ end
121
+
116
122
  def _nt_disposition_type
117
123
  start_index = index
118
124
  if node_cache[:disposition_type].has_key?(index)
@@ -125,39 +131,181 @@ module Mail
125
131
  end
126
132
 
127
133
  i0 = index
128
- if has_terminal?("inline", false, index)
129
- r1 = instantiate_node(SyntaxNode,input, index...(index + 6))
130
- @index += 6
134
+ i1, s1 = index, []
135
+ if has_terminal?('\G[iI]', true, index)
136
+ r2 = true
137
+ @index += 1
131
138
  else
132
- terminal_parse_failure("inline")
139
+ r2 = nil
140
+ end
141
+ s1 << r2
142
+ if r2
143
+ if has_terminal?('\G[nN]', true, index)
144
+ r3 = true
145
+ @index += 1
146
+ else
147
+ r3 = nil
148
+ end
149
+ s1 << r3
150
+ if r3
151
+ if has_terminal?('\G[lL]', true, index)
152
+ r4 = true
153
+ @index += 1
154
+ else
155
+ r4 = nil
156
+ end
157
+ s1 << r4
158
+ if r4
159
+ if has_terminal?('\G[iI]', true, index)
160
+ r5 = true
161
+ @index += 1
162
+ else
163
+ r5 = nil
164
+ end
165
+ s1 << r5
166
+ if r5
167
+ if has_terminal?('\G[nN]', true, index)
168
+ r6 = true
169
+ @index += 1
170
+ else
171
+ r6 = nil
172
+ end
173
+ s1 << r6
174
+ if r6
175
+ if has_terminal?('\G[eE]', true, index)
176
+ r7 = true
177
+ @index += 1
178
+ else
179
+ r7 = nil
180
+ end
181
+ s1 << r7
182
+ end
183
+ end
184
+ end
185
+ end
186
+ end
187
+ if s1.last
188
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
189
+ r1.extend(DispositionType0)
190
+ else
191
+ @index = i1
133
192
  r1 = nil
134
193
  end
135
194
  if r1
136
195
  r0 = r1
137
196
  else
138
- if has_terminal?("attachment", false, index)
139
- r2 = instantiate_node(SyntaxNode,input, index...(index + 10))
140
- @index += 10
197
+ i8, s8 = index, []
198
+ if has_terminal?('\G[aA]', true, index)
199
+ r9 = true
200
+ @index += 1
141
201
  else
142
- terminal_parse_failure("attachment")
143
- r2 = nil
202
+ r9 = nil
144
203
  end
145
- if r2
146
- r0 = r2
204
+ s8 << r9
205
+ if r9
206
+ if has_terminal?('\G[tT]', true, index)
207
+ r10 = true
208
+ @index += 1
209
+ else
210
+ r10 = nil
211
+ end
212
+ s8 << r10
213
+ if r10
214
+ if has_terminal?('\G[tT]', true, index)
215
+ r11 = true
216
+ @index += 1
217
+ else
218
+ r11 = nil
219
+ end
220
+ s8 << r11
221
+ if r11
222
+ if has_terminal?('\G[aA]', true, index)
223
+ r12 = true
224
+ @index += 1
225
+ else
226
+ r12 = nil
227
+ end
228
+ s8 << r12
229
+ if r12
230
+ if has_terminal?('\G[cC]', true, index)
231
+ r13 = true
232
+ @index += 1
233
+ else
234
+ r13 = nil
235
+ end
236
+ s8 << r13
237
+ if r13
238
+ if has_terminal?('\G[hH]', true, index)
239
+ r14 = true
240
+ @index += 1
241
+ else
242
+ r14 = nil
243
+ end
244
+ s8 << r14
245
+ if r14
246
+ if has_terminal?('\G[mM]', true, index)
247
+ r15 = true
248
+ @index += 1
249
+ else
250
+ r15 = nil
251
+ end
252
+ s8 << r15
253
+ if r15
254
+ if has_terminal?('\G[eE]', true, index)
255
+ r16 = true
256
+ @index += 1
257
+ else
258
+ r16 = nil
259
+ end
260
+ s8 << r16
261
+ if r16
262
+ if has_terminal?('\G[nN]', true, index)
263
+ r17 = true
264
+ @index += 1
265
+ else
266
+ r17 = nil
267
+ end
268
+ s8 << r17
269
+ if r17
270
+ if has_terminal?('\G[tT]', true, index)
271
+ r18 = true
272
+ @index += 1
273
+ else
274
+ r18 = nil
275
+ end
276
+ s8 << r18
277
+ end
278
+ end
279
+ end
280
+ end
281
+ end
282
+ end
283
+ end
284
+ end
285
+ end
286
+ if s8.last
287
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
288
+ r8.extend(DispositionType1)
147
289
  else
148
- r3 = _nt_extension_token
149
- if r3
150
- r0 = r3
290
+ @index = i8
291
+ r8 = nil
292
+ end
293
+ if r8
294
+ r0 = r8
295
+ else
296
+ r19 = _nt_extension_token
297
+ if r19
298
+ r0 = r19
151
299
  else
152
300
  if has_terminal?('', false, index)
153
- r4 = instantiate_node(SyntaxNode,input, index...(index + 0))
301
+ r20 = instantiate_node(SyntaxNode,input, index...(index + 0))
154
302
  @index += 0
155
303
  else
156
304
  terminal_parse_failure('')
157
- r4 = nil
305
+ r20 = nil
158
306
  end
159
- if r4
160
- r0 = r4
307
+ if r20
308
+ r0 = r20
161
309
  else
162
310
  @index = i0
163
311
  r0 = nil
@@ -15,7 +15,7 @@ module Mail
15
15
  end
16
16
 
17
17
  rule disposition_type
18
- "inline" / "attachment" / extension_token / ''
18
+ [iI] [nN] [lL] [iI] [nN] [eE] / [aA] [tT] [tT] [aA] [cC] [hH] [mM] [eE] [nN] [tT] / extension_token / ''
19
19
  end
20
20
 
21
21
  rule extension_token