mail 2.5.5 → 2.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +5 -5
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +170 -108
  4. data/lib/mail/attachments_list.rb +13 -10
  5. data/lib/mail/body.rb +105 -91
  6. data/lib/mail/check_delivery_params.rb +30 -22
  7. data/lib/mail/configuration.rb +3 -0
  8. data/lib/mail/constants.rb +79 -0
  9. data/lib/mail/elements/address.rb +118 -174
  10. data/lib/mail/elements/address_list.rb +16 -56
  11. data/lib/mail/elements/content_disposition_element.rb +12 -22
  12. data/lib/mail/elements/content_location_element.rb +9 -17
  13. data/lib/mail/elements/content_transfer_encoding_element.rb +8 -19
  14. data/lib/mail/elements/content_type_element.rb +20 -30
  15. data/lib/mail/elements/date_time_element.rb +10 -21
  16. data/lib/mail/elements/envelope_from_element.rb +23 -31
  17. data/lib/mail/elements/message_ids_element.rb +22 -20
  18. data/lib/mail/elements/mime_version_element.rb +10 -21
  19. data/lib/mail/elements/phrase_list.rb +13 -15
  20. data/lib/mail/elements/received_element.rb +26 -21
  21. data/lib/mail/elements.rb +1 -0
  22. data/lib/mail/encodings/7bit.rb +10 -14
  23. data/lib/mail/encodings/8bit.rb +5 -18
  24. data/lib/mail/encodings/base64.rb +15 -10
  25. data/lib/mail/encodings/binary.rb +4 -22
  26. data/lib/mail/encodings/identity.rb +24 -0
  27. data/lib/mail/encodings/quoted_printable.rb +13 -7
  28. data/lib/mail/encodings/transfer_encoding.rb +47 -28
  29. data/lib/mail/encodings/unix_to_unix.rb +20 -0
  30. data/lib/mail/encodings.rb +102 -93
  31. data/lib/mail/envelope.rb +12 -19
  32. data/lib/mail/field.rb +143 -71
  33. data/lib/mail/field_list.rb +73 -19
  34. data/lib/mail/fields/bcc_field.rb +42 -48
  35. data/lib/mail/fields/cc_field.rb +29 -50
  36. data/lib/mail/fields/comments_field.rb +28 -37
  37. data/lib/mail/fields/common_address_field.rb +170 -0
  38. data/lib/mail/fields/common_date_field.rb +58 -0
  39. data/lib/mail/fields/common_field.rb +77 -0
  40. data/lib/mail/fields/common_message_id_field.rb +42 -0
  41. data/lib/mail/fields/content_description_field.rb +8 -14
  42. data/lib/mail/fields/content_disposition_field.rb +20 -44
  43. data/lib/mail/fields/content_id_field.rb +25 -51
  44. data/lib/mail/fields/content_location_field.rb +12 -25
  45. data/lib/mail/fields/content_transfer_encoding_field.rb +31 -36
  46. data/lib/mail/fields/content_type_field.rb +51 -80
  47. data/lib/mail/fields/date_field.rb +24 -52
  48. data/lib/mail/fields/from_field.rb +29 -50
  49. data/lib/mail/fields/in_reply_to_field.rb +39 -49
  50. data/lib/mail/fields/keywords_field.rb +19 -32
  51. data/lib/mail/fields/message_id_field.rb +26 -71
  52. data/lib/mail/fields/mime_version_field.rb +20 -30
  53. data/lib/mail/fields/named_structured_field.rb +11 -0
  54. data/lib/mail/fields/named_unstructured_field.rb +11 -0
  55. data/lib/mail/fields/optional_field.rb +10 -7
  56. data/lib/mail/fields/{common/parameter_hash.rb → parameter_hash.rb} +16 -13
  57. data/lib/mail/fields/received_field.rb +44 -57
  58. data/lib/mail/fields/references_field.rb +36 -49
  59. data/lib/mail/fields/reply_to_field.rb +29 -50
  60. data/lib/mail/fields/resent_bcc_field.rb +29 -50
  61. data/lib/mail/fields/resent_cc_field.rb +29 -50
  62. data/lib/mail/fields/resent_date_field.rb +6 -30
  63. data/lib/mail/fields/resent_from_field.rb +29 -50
  64. data/lib/mail/fields/resent_message_id_field.rb +6 -29
  65. data/lib/mail/fields/resent_sender_field.rb +28 -57
  66. data/lib/mail/fields/resent_to_field.rb +29 -50
  67. data/lib/mail/fields/return_path_field.rb +51 -55
  68. data/lib/mail/fields/sender_field.rb +35 -56
  69. data/lib/mail/fields/structured_field.rb +4 -30
  70. data/lib/mail/fields/subject_field.rb +10 -11
  71. data/lib/mail/fields/to_field.rb +29 -50
  72. data/lib/mail/fields/unstructured_field.rb +43 -51
  73. data/lib/mail/fields.rb +1 -0
  74. data/lib/mail/header.rb +78 -129
  75. data/lib/mail/indifferent_hash.rb +1 -0
  76. data/lib/mail/mail.rb +18 -11
  77. data/lib/mail/matchers/attachment_matchers.rb +44 -0
  78. data/lib/mail/matchers/has_sent_mail.rb +81 -4
  79. data/lib/mail/message.rb +142 -139
  80. data/lib/mail/multibyte/chars.rb +24 -180
  81. data/lib/mail/multibyte/unicode.rb +32 -27
  82. data/lib/mail/multibyte/utils.rb +27 -43
  83. data/lib/mail/multibyte.rb +56 -16
  84. data/lib/mail/network/delivery_methods/exim.rb +6 -4
  85. data/lib/mail/network/delivery_methods/file_delivery.rb +12 -10
  86. data/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  87. data/lib/mail/network/delivery_methods/sendmail.rb +63 -21
  88. data/lib/mail/network/delivery_methods/smtp.rb +76 -50
  89. data/lib/mail/network/delivery_methods/smtp_connection.rb +4 -4
  90. data/lib/mail/network/delivery_methods/test_mailer.rb +5 -2
  91. data/lib/mail/network/retriever_methods/base.rb +9 -8
  92. data/lib/mail/network/retriever_methods/imap.rb +37 -18
  93. data/lib/mail/network/retriever_methods/pop3.rb +6 -3
  94. data/lib/mail/network/retriever_methods/test_retriever.rb +4 -2
  95. data/lib/mail/network.rb +2 -0
  96. data/lib/mail/parser_tools.rb +15 -0
  97. data/lib/mail/parsers/address_lists_parser.rb +33242 -0
  98. data/lib/mail/parsers/address_lists_parser.rl +179 -0
  99. data/lib/mail/parsers/content_disposition_parser.rb +901 -0
  100. data/lib/mail/parsers/content_disposition_parser.rl +89 -0
  101. data/lib/mail/parsers/content_location_parser.rb +822 -0
  102. data/lib/mail/parsers/content_location_parser.rl +78 -0
  103. data/lib/mail/parsers/content_transfer_encoding_parser.rb +522 -0
  104. data/lib/mail/parsers/content_transfer_encoding_parser.rl +71 -0
  105. data/lib/mail/parsers/content_type_parser.rb +1048 -0
  106. data/lib/mail/parsers/content_type_parser.rl +90 -0
  107. data/lib/mail/parsers/date_time_parser.rb +891 -0
  108. data/lib/mail/parsers/date_time_parser.rl +69 -0
  109. data/lib/mail/parsers/envelope_from_parser.rb +3675 -0
  110. data/lib/mail/parsers/envelope_from_parser.rl +89 -0
  111. data/lib/mail/parsers/message_ids_parser.rb +5161 -0
  112. data/lib/mail/parsers/message_ids_parser.rl +93 -0
  113. data/lib/mail/parsers/mime_version_parser.rb +513 -0
  114. data/lib/mail/parsers/mime_version_parser.rl +68 -0
  115. data/lib/mail/parsers/phrase_lists_parser.rb +884 -0
  116. data/lib/mail/parsers/phrase_lists_parser.rl +90 -0
  117. data/lib/mail/parsers/received_parser.rb +8782 -0
  118. data/lib/mail/parsers/received_parser.rl +91 -0
  119. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  120. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  121. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  122. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  123. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  124. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  125. data/lib/mail/parsers/rfc5322.rl +74 -0
  126. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  127. data/lib/mail/parsers/rfc5322_date_time.rl +37 -0
  128. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  129. data/lib/mail/parsers.rb +13 -0
  130. data/lib/mail/part.rb +11 -12
  131. data/lib/mail/parts_list.rb +90 -14
  132. data/lib/mail/smtp_envelope.rb +57 -0
  133. data/lib/mail/utilities.rb +415 -76
  134. data/lib/mail/values/unicode_tables.dat +0 -0
  135. data/lib/mail/version.rb +8 -15
  136. data/lib/mail/yaml.rb +30 -0
  137. data/lib/mail.rb +9 -32
  138. metadata +127 -79
  139. data/CHANGELOG.rdoc +0 -742
  140. data/CONTRIBUTING.md +0 -45
  141. data/Dependencies.txt +0 -3
  142. data/Gemfile +0 -32
  143. data/Rakefile +0 -21
  144. data/TODO.rdoc +0 -9
  145. data/lib/VERSION +0 -4
  146. data/lib/load_parsers.rb +0 -35
  147. data/lib/mail/core_extensions/nil.rb +0 -19
  148. data/lib/mail/core_extensions/object.rb +0 -13
  149. data/lib/mail/core_extensions/smtp.rb +0 -24
  150. data/lib/mail/core_extensions/string/access.rb +0 -145
  151. data/lib/mail/core_extensions/string/multibyte.rb +0 -78
  152. data/lib/mail/core_extensions/string.rb +0 -33
  153. data/lib/mail/fields/common/address_container.rb +0 -16
  154. data/lib/mail/fields/common/common_address.rb +0 -140
  155. data/lib/mail/fields/common/common_date.rb +0 -42
  156. data/lib/mail/fields/common/common_field.rb +0 -57
  157. data/lib/mail/fields/common/common_message_id.rb +0 -48
  158. data/lib/mail/multibyte/exceptions.rb +0 -8
  159. data/lib/mail/parsers/address_lists.rb +0 -64
  160. data/lib/mail/parsers/address_lists.treetop +0 -19
  161. data/lib/mail/parsers/content_disposition.rb +0 -535
  162. data/lib/mail/parsers/content_disposition.treetop +0 -46
  163. data/lib/mail/parsers/content_location.rb +0 -139
  164. data/lib/mail/parsers/content_location.treetop +0 -20
  165. data/lib/mail/parsers/content_transfer_encoding.rb +0 -201
  166. data/lib/mail/parsers/content_transfer_encoding.treetop +0 -18
  167. data/lib/mail/parsers/content_type.rb +0 -971
  168. data/lib/mail/parsers/content_type.treetop +0 -68
  169. data/lib/mail/parsers/date_time.rb +0 -114
  170. data/lib/mail/parsers/date_time.treetop +0 -11
  171. data/lib/mail/parsers/envelope_from.rb +0 -194
  172. data/lib/mail/parsers/envelope_from.treetop +0 -32
  173. data/lib/mail/parsers/message_ids.rb +0 -45
  174. data/lib/mail/parsers/message_ids.treetop +0 -15
  175. data/lib/mail/parsers/mime_version.rb +0 -144
  176. data/lib/mail/parsers/mime_version.treetop +0 -19
  177. data/lib/mail/parsers/phrase_lists.rb +0 -45
  178. data/lib/mail/parsers/phrase_lists.treetop +0 -15
  179. data/lib/mail/parsers/received.rb +0 -71
  180. data/lib/mail/parsers/received.treetop +0 -11
  181. data/lib/mail/parsers/rfc2045.rb +0 -421
  182. data/lib/mail/parsers/rfc2045.treetop +0 -35
  183. data/lib/mail/parsers/rfc2822.rb +0 -5397
  184. data/lib/mail/parsers/rfc2822.treetop +0 -408
  185. data/lib/mail/parsers/rfc2822_obsolete.rb +0 -3768
  186. data/lib/mail/parsers/rfc2822_obsolete.treetop +0 -241
  187. data/lib/mail/patterns.rb +0 -35
  188. data/lib/mail/version_specific/ruby_1_8.rb +0 -119
  189. data/lib/mail/version_specific/ruby_1_9.rb +0 -147
  190. data/lib/tasks/corpus.rake +0 -125
  191. data/lib/tasks/treetop.rake +0 -10
@@ -1,20 +0,0 @@
1
- module Mail
2
- grammar ContentLocation
3
-
4
- include RFC2822
5
- include RFC2045
6
-
7
- rule primary
8
- CFWS location CFWS
9
- end
10
-
11
- rule location
12
- quoted_string {
13
- def text_value
14
- quoted_content.text_value
15
- end
16
- } / (token / [\x3d])+
17
- end
18
-
19
- end
20
- end
@@ -1,201 +0,0 @@
1
- # Autogenerated from a Treetop grammar. Edits may be lost.
2
-
3
-
4
- module Mail
5
- module ContentTransferEncoding
6
- include Treetop::Runtime
7
-
8
- def root
9
- @root ||= :primary
10
- end
11
-
12
- include RFC2822
13
-
14
- include RFC2045
15
-
16
- module Primary0
17
- def CFWS1
18
- elements[0]
19
- end
20
-
21
- def encoding
22
- elements[1]
23
- end
24
-
25
- def CFWS2
26
- elements[2]
27
- end
28
-
29
- def CFWS3
30
- elements[4]
31
- end
32
- end
33
-
34
- def _nt_primary
35
- start_index = index
36
- if node_cache[:primary].has_key?(index)
37
- cached = node_cache[:primary][index]
38
- if cached
39
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
40
- @index = cached.interval.end
41
- end
42
- return cached
43
- end
44
-
45
- i0, s0 = index, []
46
- r1 = _nt_CFWS
47
- s0 << r1
48
- if r1
49
- r2 = _nt_encoding
50
- s0 << r2
51
- if r2
52
- r3 = _nt_CFWS
53
- s0 << r3
54
- if r3
55
- if has_terminal?(";", false, index)
56
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
57
- @index += 1
58
- else
59
- terminal_parse_failure(";")
60
- r5 = nil
61
- end
62
- if r5
63
- r4 = r5
64
- else
65
- r4 = instantiate_node(SyntaxNode,input, index...index)
66
- end
67
- s0 << r4
68
- if r4
69
- r6 = _nt_CFWS
70
- s0 << r6
71
- end
72
- end
73
- end
74
- end
75
- if s0.last
76
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
77
- r0.extend(Primary0)
78
- else
79
- @index = i0
80
- r0 = nil
81
- end
82
-
83
- node_cache[:primary][start_index] = r0
84
-
85
- r0
86
- end
87
-
88
- def _nt_encoding
89
- start_index = index
90
- if node_cache[:encoding].has_key?(index)
91
- cached = node_cache[:encoding][index]
92
- if cached
93
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
94
- @index = cached.interval.end
95
- end
96
- return cached
97
- end
98
-
99
- i0 = index
100
- if has_terminal?("7bits", false, index)
101
- r1 = instantiate_node(SyntaxNode,input, index...(index + 5))
102
- @index += 5
103
- else
104
- terminal_parse_failure("7bits")
105
- r1 = nil
106
- end
107
- if r1
108
- r0 = r1
109
- else
110
- if has_terminal?("8bits", false, index)
111
- r2 = instantiate_node(SyntaxNode,input, index...(index + 5))
112
- @index += 5
113
- else
114
- terminal_parse_failure("8bits")
115
- r2 = nil
116
- end
117
- if r2
118
- r0 = r2
119
- else
120
- if has_terminal?("7bit", false, index)
121
- r3 = instantiate_node(SyntaxNode,input, index...(index + 4))
122
- @index += 4
123
- else
124
- terminal_parse_failure("7bit")
125
- r3 = nil
126
- end
127
- if r3
128
- r0 = r3
129
- else
130
- if has_terminal?("8bit", false, index)
131
- r4 = instantiate_node(SyntaxNode,input, index...(index + 4))
132
- @index += 4
133
- else
134
- terminal_parse_failure("8bit")
135
- r4 = nil
136
- end
137
- if r4
138
- r0 = r4
139
- else
140
- if has_terminal?("binary", false, index)
141
- r5 = instantiate_node(SyntaxNode,input, index...(index + 6))
142
- @index += 6
143
- else
144
- terminal_parse_failure("binary")
145
- r5 = nil
146
- end
147
- if r5
148
- r0 = r5
149
- else
150
- if has_terminal?("quoted-printable", false, index)
151
- r6 = instantiate_node(SyntaxNode,input, index...(index + 16))
152
- @index += 16
153
- else
154
- terminal_parse_failure("quoted-printable")
155
- r6 = nil
156
- end
157
- if r6
158
- r0 = r6
159
- else
160
- if has_terminal?("base64", false, index)
161
- r7 = instantiate_node(SyntaxNode,input, index...(index + 6))
162
- @index += 6
163
- else
164
- terminal_parse_failure("base64")
165
- r7 = nil
166
- end
167
- if r7
168
- r0 = r7
169
- else
170
- r8 = _nt_ietf_token
171
- if r8
172
- r0 = r8
173
- else
174
- r9 = _nt_custom_x_token
175
- if r9
176
- r0 = r9
177
- else
178
- @index = i0
179
- r0 = nil
180
- end
181
- end
182
- end
183
- end
184
- end
185
- end
186
- end
187
- end
188
- end
189
-
190
- node_cache[:encoding][start_index] = r0
191
-
192
- r0
193
- end
194
-
195
- end
196
-
197
- class ContentTransferEncodingParser < Treetop::Runtime::CompiledParser
198
- include ContentTransferEncoding
199
- end
200
-
201
- end
@@ -1,18 +0,0 @@
1
- module Mail
2
- grammar ContentTransferEncoding
3
-
4
- include RFC2822
5
- include RFC2045
6
-
7
- rule primary
8
- CFWS encoding CFWS ";"? CFWS
9
- end
10
-
11
- rule encoding
12
- "7bits" / "8bits" /
13
- "7bit" / "8bit" / "binary" / "quoted-printable" / "base64" /
14
- ietf_token / custom_x_token
15
- end
16
-
17
- end
18
- end