mail 2.6.6 → 2.7.0

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 (158) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +74 -90
  4. data/lib/mail/attachments_list.rb +8 -4
  5. data/lib/mail/body.rb +42 -36
  6. data/lib/mail/check_delivery_params.rb +8 -6
  7. data/lib/mail/configuration.rb +2 -0
  8. data/lib/mail/core_extensions/smtp.rb +19 -16
  9. data/lib/mail/core_extensions/string.rb +0 -4
  10. data/lib/mail/elements/address.rb +28 -22
  11. data/lib/mail/elements/address_list.rb +10 -18
  12. data/lib/mail/elements/content_disposition_element.rb +8 -15
  13. data/lib/mail/elements/content_location_element.rb +5 -10
  14. data/lib/mail/elements/content_transfer_encoding_element.rb +5 -10
  15. data/lib/mail/elements/content_type_element.rb +8 -19
  16. data/lib/mail/elements/date_time_element.rb +6 -14
  17. data/lib/mail/elements/envelope_from_element.rb +14 -21
  18. data/lib/mail/elements/message_ids_element.rb +8 -12
  19. data/lib/mail/elements/mime_version_element.rb +6 -14
  20. data/lib/mail/elements/phrase_list.rb +6 -9
  21. data/lib/mail/elements/received_element.rb +9 -15
  22. data/lib/mail/encodings/7bit.rb +5 -15
  23. data/lib/mail/encodings/8bit.rb +2 -21
  24. data/lib/mail/encodings/base64.rb +11 -12
  25. data/lib/mail/encodings/binary.rb +3 -22
  26. data/lib/mail/encodings/identity.rb +24 -0
  27. data/lib/mail/encodings/quoted_printable.rb +6 -6
  28. data/lib/mail/encodings/transfer_encoding.rb +38 -29
  29. data/lib/mail/encodings/unix_to_unix.rb +2 -1
  30. data/lib/mail/encodings.rb +99 -43
  31. data/lib/mail/envelope.rb +1 -1
  32. data/lib/mail/field.rb +94 -59
  33. data/lib/mail/fields/bcc_field.rb +2 -2
  34. data/lib/mail/fields/cc_field.rb +1 -1
  35. data/lib/mail/fields/comments_field.rb +1 -1
  36. data/lib/mail/fields/common/common_address.rb +32 -7
  37. data/lib/mail/fields/common/common_field.rb +1 -10
  38. data/lib/mail/fields/common/parameter_hash.rb +1 -1
  39. data/lib/mail/fields/content_description_field.rb +1 -1
  40. data/lib/mail/fields/content_disposition_field.rb +3 -3
  41. data/lib/mail/fields/content_id_field.rb +2 -2
  42. data/lib/mail/fields/content_location_field.rb +1 -1
  43. data/lib/mail/fields/content_transfer_encoding_field.rb +1 -1
  44. data/lib/mail/fields/content_type_field.rb +3 -8
  45. data/lib/mail/fields/date_field.rb +2 -3
  46. data/lib/mail/fields/from_field.rb +1 -1
  47. data/lib/mail/fields/in_reply_to_field.rb +1 -1
  48. data/lib/mail/fields/keywords_field.rb +1 -1
  49. data/lib/mail/fields/message_id_field.rb +1 -1
  50. data/lib/mail/fields/mime_version_field.rb +1 -1
  51. data/lib/mail/fields/optional_field.rb +4 -1
  52. data/lib/mail/fields/received_field.rb +1 -1
  53. data/lib/mail/fields/references_field.rb +1 -1
  54. data/lib/mail/fields/reply_to_field.rb +1 -1
  55. data/lib/mail/fields/resent_bcc_field.rb +1 -1
  56. data/lib/mail/fields/resent_cc_field.rb +1 -1
  57. data/lib/mail/fields/resent_date_field.rb +0 -1
  58. data/lib/mail/fields/resent_from_field.rb +1 -1
  59. data/lib/mail/fields/resent_message_id_field.rb +1 -1
  60. data/lib/mail/fields/resent_sender_field.rb +1 -1
  61. data/lib/mail/fields/resent_to_field.rb +1 -1
  62. data/lib/mail/fields/return_path_field.rb +1 -1
  63. data/lib/mail/fields/sender_field.rb +1 -1
  64. data/lib/mail/fields/subject_field.rb +1 -1
  65. data/lib/mail/fields/to_field.rb +1 -1
  66. data/lib/mail/fields/unstructured_field.rb +21 -4
  67. data/lib/mail/header.rb +10 -8
  68. data/lib/mail/mail.rb +2 -10
  69. data/lib/mail/matchers/has_sent_mail.rb +21 -1
  70. data/lib/mail/message.rb +77 -66
  71. data/lib/mail/multibyte/chars.rb +29 -28
  72. data/lib/mail/multibyte.rb +64 -15
  73. data/lib/mail/network/delivery_methods/logger_delivery.rb +37 -0
  74. data/lib/mail/network/delivery_methods/sendmail.rb +8 -5
  75. data/lib/mail/network/delivery_methods/smtp.rb +58 -49
  76. data/lib/mail/network/delivery_methods/smtp_connection.rb +9 -1
  77. data/lib/mail/network/retriever_methods/imap.rb +18 -5
  78. data/lib/mail/network/retriever_methods/pop3.rb +3 -1
  79. data/lib/mail/network.rb +1 -0
  80. data/lib/mail/parser_tools.rb +15 -0
  81. data/lib/mail/parsers/address_lists_parser.rb +33186 -112
  82. data/lib/mail/parsers/address_lists_parser.rl +172 -0
  83. data/lib/mail/parsers/content_disposition_parser.rb +888 -55
  84. data/lib/mail/parsers/content_disposition_parser.rl +82 -0
  85. data/lib/mail/parsers/content_location_parser.rb +800 -23
  86. data/lib/mail/parsers/content_location_parser.rl +71 -0
  87. data/lib/mail/parsers/content_transfer_encoding_parser.rb +510 -22
  88. data/lib/mail/parsers/content_transfer_encoding_parser.rl +64 -0
  89. data/lib/mail/parsers/content_type_parser.rb +1032 -54
  90. data/lib/mail/parsers/content_type_parser.rl +83 -0
  91. data/lib/mail/parsers/date_time_parser.rb +873 -26
  92. data/lib/mail/parsers/date_time_parser.rl +62 -0
  93. data/lib/mail/parsers/envelope_from_parser.rb +3564 -36
  94. data/lib/mail/parsers/envelope_from_parser.rl +82 -0
  95. data/lib/mail/parsers/message_ids_parser.rb +2843 -25
  96. data/lib/mail/parsers/message_ids_parser.rl +82 -0
  97. data/lib/mail/parsers/mime_version_parser.rb +493 -26
  98. data/lib/mail/parsers/mime_version_parser.rl +61 -0
  99. data/lib/mail/parsers/phrase_lists_parser.rb +874 -19
  100. data/lib/mail/parsers/phrase_lists_parser.rl +83 -0
  101. data/lib/mail/parsers/received_parser.rb +8743 -38
  102. data/lib/mail/parsers/received_parser.rl +84 -0
  103. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  104. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  105. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  106. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  107. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  108. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  109. data/lib/mail/parsers/rfc5322.rl +59 -0
  110. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  111. data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +8 -1
  112. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  113. data/lib/mail/parsers.rb +16 -24
  114. data/lib/mail/part.rb +1 -1
  115. data/lib/mail/parts_list.rb +5 -6
  116. data/lib/mail/utilities.rb +48 -17
  117. data/lib/mail/version.rb +2 -2
  118. data/lib/mail/version_specific/ruby_1_8.rb +40 -3
  119. data/lib/mail/version_specific/ruby_1_9.rb +61 -9
  120. data/lib/mail.rb +3 -16
  121. metadata +29 -52
  122. data/CHANGELOG.rdoc +0 -803
  123. data/CONTRIBUTING.md +0 -60
  124. data/Dependencies.txt +0 -2
  125. data/Gemfile +0 -14
  126. data/Rakefile +0 -29
  127. data/TODO.rdoc +0 -9
  128. data/lib/mail/core_extensions/string/access.rb +0 -146
  129. data/lib/mail/core_extensions/string/multibyte.rb +0 -79
  130. data/lib/mail/multibyte/exceptions.rb +0 -9
  131. data/lib/mail/parsers/ragel/common.rl +0 -185
  132. data/lib/mail/parsers/ragel/parser_info.rb +0 -61
  133. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +0 -14864
  134. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +0 -37
  135. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +0 -751
  136. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +0 -37
  137. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +0 -614
  138. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +0 -37
  139. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +0 -447
  140. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +0 -37
  141. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +0 -825
  142. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +0 -37
  143. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +0 -817
  144. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +0 -37
  145. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +0 -2149
  146. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +0 -37
  147. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +0 -1570
  148. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +0 -37
  149. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +0 -440
  150. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +0 -37
  151. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +0 -564
  152. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +0 -37
  153. data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +0 -51
  154. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +0 -5144
  155. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +0 -37
  156. data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +0 -37
  157. data/lib/mail/parsers/ragel/ruby.rb +0 -40
  158. data/lib/mail/parsers/ragel.rb +0 -18
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
  # frozen_string_literal: true
3
+ require 'net/imap' # for decode_utf7
3
4
 
4
5
  module Mail
5
6
  class Ruby18
@@ -56,7 +57,27 @@ module Mail
56
57
  end
57
58
 
58
59
  def Ruby18.transcode_charset(str, from_encoding, to_encoding = 'UTF-8')
59
- Iconv.conv("#{normalize_iconv_charset_encoding(to_encoding)}//IGNORE", normalize_iconv_charset_encoding(from_encoding), str)
60
+ case from_encoding
61
+ when /utf-?7/i
62
+ decode_utf7(str)
63
+ else
64
+ retried = false
65
+ begin
66
+ Iconv.conv("#{normalize_iconv_charset_encoding(to_encoding)}//IGNORE", normalize_iconv_charset_encoding(from_encoding), str)
67
+ rescue Iconv::InvalidEncoding
68
+ if retried
69
+ raise
70
+ else
71
+ from_encoding = 'ASCII'
72
+ retried = true
73
+ retry
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ def Ruby18.decode_utf7(str)
80
+ Net::IMAP.decode_utf7(str)
60
81
  end
61
82
 
62
83
  def Ruby18.b_value_encode(str, encoding)
@@ -97,7 +118,12 @@ module Mail
97
118
  end
98
119
 
99
120
  def Ruby18.param_decode(str, encoding)
100
- URI.unescape(str)
121
+ str = URI.unescape(str)
122
+ if encoding
123
+ transcode_charset(str, encoding)
124
+ else
125
+ str
126
+ end
101
127
  end
102
128
 
103
129
  def Ruby18.param_encode(str)
@@ -106,6 +132,10 @@ module Mail
106
132
  "#{encoding}'#{language}'#{URI.escape(str)}"
107
133
  end
108
134
 
135
+ def Ruby18.string_byteslice(str, *args)
136
+ str.slice(*args)
137
+ end
138
+
109
139
  private
110
140
 
111
141
  def Ruby18.normalize_iconv_charset_encoding(encoding)
@@ -119,7 +149,14 @@ module Mail
119
149
  when 'KS_C_5601-1987'
120
150
  'CP949'
121
151
  else
122
- encoding
152
+ # Fall back to ASCII for charsets that Iconv doesn't recognize
153
+ begin
154
+ Iconv.new('UTF-8', encoding)
155
+ rescue Iconv::InvalidEncoding => e
156
+ 'ASCII'
157
+ else
158
+ encoding
159
+ end
123
160
  end
124
161
  end
125
162
  end
@@ -5,13 +5,23 @@ module Mail
5
5
  class Ruby19
6
6
  class StrictCharsetEncoder
7
7
  def encode(string, charset)
8
- string.force_encoding(Mail::Ruby19.pick_encoding(charset))
8
+ case charset
9
+ when /utf-?7/i
10
+ Mail::Ruby19.decode_utf7(string)
11
+ else
12
+ string.force_encoding(Mail::Ruby19.pick_encoding(charset))
13
+ end
9
14
  end
10
15
  end
11
16
 
12
17
  class BestEffortCharsetEncoder
13
18
  def encode(string, charset)
14
- string.force_encoding(pick_encoding(charset))
19
+ case charset
20
+ when /utf-?7/i
21
+ Mail::Ruby19.decode_utf7(string)
22
+ else
23
+ string.force_encoding(pick_encoding(charset))
24
+ end
15
25
  end
16
26
 
17
27
  private
@@ -32,7 +42,7 @@ module Mail
32
42
  class << self
33
43
  attr_accessor :charset_encoder
34
44
  end
35
- self.charset_encoder = StrictCharsetEncoder.new
45
+ self.charset_encoder = BestEffortCharsetEncoder.new
36
46
 
37
47
  # Escapes any parenthesis in a string that are unescaped this uses
38
48
  # a Ruby 1.9.1 regexp feature of negative look behind
@@ -78,7 +88,32 @@ module Mail
78
88
  end
79
89
 
80
90
  def Ruby19.transcode_charset(str, from_encoding, to_encoding = Encoding::UTF_8)
81
- charset_encoder.encode(str.dup, from_encoding).encode(to_encoding, :undef => :replace, :invalid => :replace, :replace => '')
91
+ to_encoding = to_encoding.to_s if RUBY_VERSION < '1.9.3'
92
+ to_encoding = Encoding.find(to_encoding)
93
+ replacement_char = to_encoding == Encoding::UTF_8 ? '�' : '?'
94
+ charset_encoder.encode(str.dup, from_encoding).encode(to_encoding, :undef => :replace, :invalid => :replace, :replace => replacement_char)
95
+ end
96
+
97
+ # From Ruby stdlib Net::IMAP
98
+ def Ruby19.encode_utf7(string)
99
+ string.gsub(/(&)|[^\x20-\x7e]+/) do
100
+ if $1
101
+ "&-"
102
+ else
103
+ base64 = [$&.encode(Encoding::UTF_16BE)].pack("m0")
104
+ "&" + base64.delete("=").tr("/", ",") + "-"
105
+ end
106
+ end.force_encoding(Encoding::ASCII_8BIT)
107
+ end
108
+
109
+ def Ruby19.decode_utf7(utf7)
110
+ utf7.gsub(/&([^-]+)?-/n) do
111
+ if $1
112
+ ($1.tr(",", "/") + "===").unpack("m")[0].encode(Encoding::UTF_8, Encoding::UTF_16BE)
113
+ else
114
+ "&"
115
+ end
116
+ end
82
117
  end
83
118
 
84
119
  def Ruby19.b_value_encode(str, encoding = nil)
@@ -93,8 +128,7 @@ module Mail
93
128
  str = Ruby19.decode_base64(match[2])
94
129
  str = charset_encoder.encode(str, charset)
95
130
  end
96
- decoded = str.encode(Encoding::UTF_8, :invalid => :replace, :replace => "")
97
- decoded.valid_encoding? ? decoded : decoded.encode(Encoding::UTF_16LE, :invalid => :replace, :replace => "").encode(Encoding::UTF_8)
131
+ transcode_to_scrubbed_utf8(str)
98
132
  rescue Encoding::UndefinedConversionError, ArgumentError, Encoding::ConverterNotFoundError
99
133
  warn "Encoding conversion failed #{$!}"
100
134
  str.dup.force_encoding(Encoding::UTF_8)
@@ -118,8 +152,7 @@ module Mail
118
152
  # jruby/jruby#829 which subtly changes String#encode semantics.
119
153
  str.force_encoding(Encoding::UTF_8) if str.encoding == Encoding::ASCII_8BIT
120
154
  end
121
- decoded = str.encode(Encoding::UTF_8, :invalid => :replace, :replace => "")
122
- decoded.valid_encoding? ? decoded : decoded.encode(Encoding::UTF_16LE, :invalid => :replace, :replace => "").encode(Encoding::UTF_8)
155
+ transcode_to_scrubbed_utf8(str)
123
156
  rescue Encoding::UndefinedConversionError, ArgumentError, Encoding::ConverterNotFoundError
124
157
  warn "Encoding conversion failed #{$!}"
125
158
  str.dup.force_encoding(Encoding::UTF_8)
@@ -128,7 +161,10 @@ module Mail
128
161
  def Ruby19.param_decode(str, encoding)
129
162
  str = uri_parser.unescape(str)
130
163
  str = charset_encoder.encode(str, encoding) if encoding
131
- str
164
+ transcode_to_scrubbed_utf8(str)
165
+ rescue Encoding::UndefinedConversionError, ArgumentError, Encoding::ConverterNotFoundError
166
+ warn "Encoding conversion failed #{$!}"
167
+ str.dup.force_encoding(Encoding::UTF_8)
132
168
  end
133
169
 
134
170
  def Ruby19.param_encode(str)
@@ -207,6 +243,16 @@ module Mail
207
243
  convert_to_encoding(encoding)
208
244
  end
209
245
 
246
+ if "string".respond_to?(:byteslice)
247
+ def Ruby19.string_byteslice(str, *args)
248
+ str.byteslice(*args)
249
+ end
250
+ else
251
+ def Ruby19.string_byteslice(str, *args)
252
+ str.unpack('C*').slice(*args).pack('C*').force_encoding(str.encoding)
253
+ end
254
+ end
255
+
210
256
  class << self
211
257
  private
212
258
 
@@ -214,6 +260,7 @@ module Mail
214
260
  if encoding.is_a?(Encoding)
215
261
  encoding
216
262
  else
263
+ # Fall back to ASCII for charsets that Ruby doesn't recognize
217
264
  begin
218
265
  Encoding.find(encoding)
219
266
  rescue ArgumentError
@@ -221,6 +268,11 @@ module Mail
221
268
  end
222
269
  end
223
270
  end
271
+
272
+ def transcode_to_scrubbed_utf8(str)
273
+ decoded = str.encode(Encoding::UTF_8, :undef => :replace, :invalid => :replace, :replace => "�")
274
+ decoded.valid_encoding? ? decoded : decoded.encode(Encoding::UTF_16LE, :invalid => :replace, :replace => "�").encode(Encoding::UTF_8)
275
+ end
224
276
  end
225
277
  end
226
278
  end
data/lib/mail.rb CHANGED
@@ -7,13 +7,7 @@ module Mail # :doc:
7
7
 
8
8
  require 'uri'
9
9
  require 'net/smtp'
10
-
11
- begin
12
- # Use mime/types/columnar if available, for reduced memory usage
13
- require 'mime/types/columnar'
14
- rescue LoadError
15
- require 'mime/types'
16
- end
10
+ require 'mini_mime'
17
11
 
18
12
  if RUBY_VERSION <= '1.8.6'
19
13
  begin
@@ -34,17 +28,10 @@ module Mail # :doc:
34
28
  require 'mail/version'
35
29
 
36
30
  require 'mail/core_extensions/string'
37
- require 'mail/core_extensions/smtp' if RUBY_VERSION < '1.9.3'
31
+ require 'mail/core_extensions/smtp'
38
32
  require 'mail/indifferent_hash'
39
33
 
40
- # Only load our multibyte extensions if AS is not already loaded
41
- if defined?(ActiveSupport)
42
- require 'active_support/inflector'
43
- else
44
- require 'mail/core_extensions/string/access'
45
- require 'mail/core_extensions/string/multibyte'
46
- require 'mail/multibyte'
47
- end
34
+ require 'mail/multibyte'
48
35
 
49
36
  require 'mail/constants'
50
37
  require 'mail/utilities'
metadata CHANGED
@@ -1,35 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.6
4
+ version: 2.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikel Lindsaar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-09 00:00:00.000000000 Z
11
+ date: 2017-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: mime-types
14
+ name: mini_mime
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '4'
19
+ version: 0.1.1
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: '1.16'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '4'
26
+ version: 0.1.1
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: bundler
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -92,18 +86,9 @@ executables: []
92
86
  extensions: []
93
87
  extra_rdoc_files:
94
88
  - README.md
95
- - CONTRIBUTING.md
96
- - CHANGELOG.rdoc
97
- - TODO.rdoc
98
89
  files:
99
- - CHANGELOG.rdoc
100
- - CONTRIBUTING.md
101
- - Dependencies.txt
102
- - Gemfile
103
90
  - MIT-LICENSE
104
91
  - README.md
105
- - Rakefile
106
- - TODO.rdoc
107
92
  - lib/mail.rb
108
93
  - lib/mail/attachments_list.rb
109
94
  - lib/mail/body.rb
@@ -112,8 +97,6 @@ files:
112
97
  - lib/mail/constants.rb
113
98
  - lib/mail/core_extensions/smtp.rb
114
99
  - lib/mail/core_extensions/string.rb
115
- - lib/mail/core_extensions/string/access.rb
116
- - lib/mail/core_extensions/string/multibyte.rb
117
100
  - lib/mail/elements.rb
118
101
  - lib/mail/elements/address.rb
119
102
  - lib/mail/elements/address_list.rb
@@ -132,6 +115,7 @@ files:
132
115
  - lib/mail/encodings/8bit.rb
133
116
  - lib/mail/encodings/base64.rb
134
117
  - lib/mail/encodings/binary.rb
118
+ - lib/mail/encodings/identity.rb
135
119
  - lib/mail/encodings/quoted_printable.rb
136
120
  - lib/mail/encodings/transfer_encoding.rb
137
121
  - lib/mail/encodings/unix_to_unix.rb
@@ -185,12 +169,12 @@ files:
185
169
  - lib/mail/message.rb
186
170
  - lib/mail/multibyte.rb
187
171
  - lib/mail/multibyte/chars.rb
188
- - lib/mail/multibyte/exceptions.rb
189
172
  - lib/mail/multibyte/unicode.rb
190
173
  - lib/mail/multibyte/utils.rb
191
174
  - lib/mail/network.rb
192
175
  - lib/mail/network/delivery_methods/exim.rb
193
176
  - lib/mail/network/delivery_methods/file_delivery.rb
177
+ - lib/mail/network/delivery_methods/logger_delivery.rb
194
178
  - lib/mail/network/delivery_methods/sendmail.rb
195
179
  - lib/mail/network/delivery_methods/smtp.rb
196
180
  - lib/mail/network/delivery_methods/smtp_connection.rb
@@ -199,47 +183,40 @@ files:
199
183
  - lib/mail/network/retriever_methods/imap.rb
200
184
  - lib/mail/network/retriever_methods/pop3.rb
201
185
  - lib/mail/network/retriever_methods/test_retriever.rb
186
+ - lib/mail/parser_tools.rb
202
187
  - lib/mail/parsers.rb
203
188
  - lib/mail/parsers/address_lists_parser.rb
189
+ - lib/mail/parsers/address_lists_parser.rl
204
190
  - lib/mail/parsers/content_disposition_parser.rb
191
+ - lib/mail/parsers/content_disposition_parser.rl
205
192
  - lib/mail/parsers/content_location_parser.rb
193
+ - lib/mail/parsers/content_location_parser.rl
206
194
  - lib/mail/parsers/content_transfer_encoding_parser.rb
195
+ - lib/mail/parsers/content_transfer_encoding_parser.rl
207
196
  - lib/mail/parsers/content_type_parser.rb
197
+ - lib/mail/parsers/content_type_parser.rl
208
198
  - lib/mail/parsers/date_time_parser.rb
199
+ - lib/mail/parsers/date_time_parser.rl
209
200
  - lib/mail/parsers/envelope_from_parser.rb
201
+ - lib/mail/parsers/envelope_from_parser.rl
210
202
  - lib/mail/parsers/message_ids_parser.rb
203
+ - lib/mail/parsers/message_ids_parser.rl
211
204
  - lib/mail/parsers/mime_version_parser.rb
205
+ - lib/mail/parsers/mime_version_parser.rl
212
206
  - lib/mail/parsers/phrase_lists_parser.rb
213
- - lib/mail/parsers/ragel.rb
214
- - lib/mail/parsers/ragel/common.rl
215
- - lib/mail/parsers/ragel/date_time.rl
216
- - lib/mail/parsers/ragel/parser_info.rb
217
- - lib/mail/parsers/ragel/ruby.rb
218
- - lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb
219
- - lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl
220
- - lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb
221
- - lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl
222
- - lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb
223
- - lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl
224
- - lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb
225
- - lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl
226
- - lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb
227
- - lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl
228
- - lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb
229
- - lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl
230
- - lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb
231
- - lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl
232
- - lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb
233
- - lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl
234
- - lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb
235
- - lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl
236
- - lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb
237
- - lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl
238
- - lib/mail/parsers/ragel/ruby/machines/rb_actions.rl
239
- - lib/mail/parsers/ragel/ruby/machines/received_machine.rb
240
- - lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl
241
- - lib/mail/parsers/ragel/ruby/parser.rb.rl.erb
207
+ - lib/mail/parsers/phrase_lists_parser.rl
242
208
  - lib/mail/parsers/received_parser.rb
209
+ - lib/mail/parsers/received_parser.rl
210
+ - lib/mail/parsers/rfc2045_content_transfer_encoding.rl
211
+ - lib/mail/parsers/rfc2045_content_type.rl
212
+ - lib/mail/parsers/rfc2045_mime.rl
213
+ - lib/mail/parsers/rfc2183_content_disposition.rl
214
+ - lib/mail/parsers/rfc3629_utf8.rl
215
+ - lib/mail/parsers/rfc5234_abnf_core_rules.rl
216
+ - lib/mail/parsers/rfc5322.rl
217
+ - lib/mail/parsers/rfc5322_address.rl
218
+ - lib/mail/parsers/rfc5322_date_time.rl
219
+ - lib/mail/parsers/rfc5322_lexical_tokens.rl
243
220
  - lib/mail/part.rb
244
221
  - lib/mail/parts_list.rb
245
222
  - lib/mail/utilities.rb