mail 2.6.6 → 2.7.1

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 (160) hide show
  1. checksums.yaml +5 -5
  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 +50 -38
  6. data/lib/mail/check_delivery_params.rb +8 -6
  7. data/lib/mail/configuration.rb +2 -0
  8. data/lib/mail/constants.rb +1 -1
  9. data/lib/mail/core_extensions/smtp.rb +19 -16
  10. data/lib/mail/core_extensions/string.rb +0 -4
  11. data/lib/mail/elements/address.rb +28 -22
  12. data/lib/mail/elements/address_list.rb +10 -18
  13. data/lib/mail/elements/content_disposition_element.rb +8 -15
  14. data/lib/mail/elements/content_location_element.rb +5 -10
  15. data/lib/mail/elements/content_transfer_encoding_element.rb +5 -10
  16. data/lib/mail/elements/content_type_element.rb +8 -19
  17. data/lib/mail/elements/date_time_element.rb +6 -14
  18. data/lib/mail/elements/envelope_from_element.rb +14 -21
  19. data/lib/mail/elements/message_ids_element.rb +8 -12
  20. data/lib/mail/elements/mime_version_element.rb +6 -14
  21. data/lib/mail/elements/phrase_list.rb +6 -9
  22. data/lib/mail/elements/received_element.rb +9 -15
  23. data/lib/mail/encodings/7bit.rb +5 -15
  24. data/lib/mail/encodings/8bit.rb +2 -21
  25. data/lib/mail/encodings/base64.rb +11 -12
  26. data/lib/mail/encodings/binary.rb +3 -22
  27. data/lib/mail/encodings/identity.rb +24 -0
  28. data/lib/mail/encodings/quoted_printable.rb +6 -6
  29. data/lib/mail/encodings/transfer_encoding.rb +38 -29
  30. data/lib/mail/encodings/unix_to_unix.rb +3 -1
  31. data/lib/mail/encodings.rb +99 -43
  32. data/lib/mail/envelope.rb +1 -1
  33. data/lib/mail/field.rb +96 -59
  34. data/lib/mail/fields/bcc_field.rb +2 -2
  35. data/lib/mail/fields/cc_field.rb +1 -1
  36. data/lib/mail/fields/comments_field.rb +1 -1
  37. data/lib/mail/fields/common/common_address.rb +32 -7
  38. data/lib/mail/fields/common/common_field.rb +1 -10
  39. data/lib/mail/fields/common/parameter_hash.rb +1 -1
  40. data/lib/mail/fields/content_description_field.rb +1 -1
  41. data/lib/mail/fields/content_disposition_field.rb +3 -3
  42. data/lib/mail/fields/content_id_field.rb +2 -2
  43. data/lib/mail/fields/content_location_field.rb +1 -1
  44. data/lib/mail/fields/content_transfer_encoding_field.rb +1 -1
  45. data/lib/mail/fields/content_type_field.rb +4 -9
  46. data/lib/mail/fields/date_field.rb +2 -3
  47. data/lib/mail/fields/from_field.rb +1 -1
  48. data/lib/mail/fields/in_reply_to_field.rb +1 -1
  49. data/lib/mail/fields/keywords_field.rb +1 -1
  50. data/lib/mail/fields/message_id_field.rb +1 -1
  51. data/lib/mail/fields/mime_version_field.rb +1 -1
  52. data/lib/mail/fields/optional_field.rb +4 -1
  53. data/lib/mail/fields/received_field.rb +1 -1
  54. data/lib/mail/fields/references_field.rb +1 -1
  55. data/lib/mail/fields/reply_to_field.rb +1 -1
  56. data/lib/mail/fields/resent_bcc_field.rb +1 -1
  57. data/lib/mail/fields/resent_cc_field.rb +1 -1
  58. data/lib/mail/fields/resent_date_field.rb +0 -1
  59. data/lib/mail/fields/resent_from_field.rb +1 -1
  60. data/lib/mail/fields/resent_message_id_field.rb +1 -1
  61. data/lib/mail/fields/resent_sender_field.rb +1 -1
  62. data/lib/mail/fields/resent_to_field.rb +1 -1
  63. data/lib/mail/fields/return_path_field.rb +1 -1
  64. data/lib/mail/fields/sender_field.rb +1 -1
  65. data/lib/mail/fields/subject_field.rb +1 -1
  66. data/lib/mail/fields/to_field.rb +1 -1
  67. data/lib/mail/fields/unstructured_field.rb +21 -4
  68. data/lib/mail/header.rb +10 -8
  69. data/lib/mail/mail.rb +2 -10
  70. data/lib/mail/matchers/has_sent_mail.rb +21 -1
  71. data/lib/mail/message.rb +78 -68
  72. data/lib/mail/multibyte/chars.rb +29 -28
  73. data/lib/mail/multibyte/unicode.rb +10 -10
  74. data/lib/mail/multibyte.rb +64 -15
  75. data/lib/mail/network/delivery_methods/logger_delivery.rb +37 -0
  76. data/lib/mail/network/delivery_methods/sendmail.rb +8 -5
  77. data/lib/mail/network/delivery_methods/smtp.rb +58 -49
  78. data/lib/mail/network/delivery_methods/smtp_connection.rb +9 -1
  79. data/lib/mail/network/retriever_methods/imap.rb +18 -5
  80. data/lib/mail/network/retriever_methods/pop3.rb +3 -1
  81. data/lib/mail/network.rb +1 -0
  82. data/lib/mail/parser_tools.rb +15 -0
  83. data/lib/mail/parsers/address_lists_parser.rb +33207 -104
  84. data/lib/mail/parsers/address_lists_parser.rl +172 -0
  85. data/lib/mail/parsers/content_disposition_parser.rb +876 -49
  86. data/lib/mail/parsers/content_disposition_parser.rl +82 -0
  87. data/lib/mail/parsers/content_location_parser.rb +803 -23
  88. data/lib/mail/parsers/content_location_parser.rl +71 -0
  89. data/lib/mail/parsers/content_transfer_encoding_parser.rb +501 -19
  90. data/lib/mail/parsers/content_transfer_encoding_parser.rl +64 -0
  91. data/lib/mail/parsers/content_type_parser.rb +1023 -48
  92. data/lib/mail/parsers/content_type_parser.rl +83 -0
  93. data/lib/mail/parsers/date_time_parser.rb +870 -24
  94. data/lib/mail/parsers/date_time_parser.rl +62 -0
  95. data/lib/mail/parsers/envelope_from_parser.rb +3569 -34
  96. data/lib/mail/parsers/envelope_from_parser.rl +82 -0
  97. data/lib/mail/parsers/message_ids_parser.rb +2839 -25
  98. data/lib/mail/parsers/message_ids_parser.rl +82 -0
  99. data/lib/mail/parsers/mime_version_parser.rb +491 -26
  100. data/lib/mail/parsers/mime_version_parser.rl +61 -0
  101. data/lib/mail/parsers/phrase_lists_parser.rb +860 -18
  102. data/lib/mail/parsers/phrase_lists_parser.rl +83 -0
  103. data/lib/mail/parsers/received_parser.rb +8764 -37
  104. data/lib/mail/parsers/received_parser.rl +84 -0
  105. data/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  106. data/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  107. data/lib/mail/parsers/rfc2045_mime.rl +16 -0
  108. data/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  109. data/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  110. data/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  111. data/lib/mail/parsers/rfc5322.rl +59 -0
  112. data/lib/mail/parsers/rfc5322_address.rl +72 -0
  113. data/lib/mail/parsers/{ragel/date_time.rl → rfc5322_date_time.rl} +8 -1
  114. data/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  115. data/lib/mail/parsers.rb +16 -24
  116. data/lib/mail/part.rb +3 -3
  117. data/lib/mail/parts_list.rb +5 -6
  118. data/lib/mail/utilities.rb +59 -28
  119. data/lib/mail/version.rb +2 -2
  120. data/lib/mail/version_specific/ruby_1_8.rb +40 -3
  121. data/lib/mail/version_specific/ruby_1_9.rb +61 -9
  122. data/lib/mail.rb +3 -16
  123. metadata +44 -53
  124. data/CHANGELOG.rdoc +0 -803
  125. data/CONTRIBUTING.md +0 -60
  126. data/Dependencies.txt +0 -2
  127. data/Gemfile +0 -14
  128. data/Rakefile +0 -29
  129. data/TODO.rdoc +0 -9
  130. data/lib/mail/core_extensions/string/access.rb +0 -146
  131. data/lib/mail/core_extensions/string/multibyte.rb +0 -79
  132. data/lib/mail/multibyte/exceptions.rb +0 -9
  133. data/lib/mail/parsers/ragel/common.rl +0 -185
  134. data/lib/mail/parsers/ragel/parser_info.rb +0 -61
  135. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb +0 -14864
  136. data/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb.rl +0 -37
  137. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb +0 -751
  138. data/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb.rl +0 -37
  139. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb +0 -614
  140. data/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb.rl +0 -37
  141. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb +0 -447
  142. data/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb.rl +0 -37
  143. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb +0 -825
  144. data/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb.rl +0 -37
  145. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb +0 -817
  146. data/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb.rl +0 -37
  147. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb +0 -2149
  148. data/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb.rl +0 -37
  149. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb +0 -1570
  150. data/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb.rl +0 -37
  151. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb +0 -440
  152. data/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb.rl +0 -37
  153. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb +0 -564
  154. data/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb.rl +0 -37
  155. data/lib/mail/parsers/ragel/ruby/machines/rb_actions.rl +0 -51
  156. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb +0 -5144
  157. data/lib/mail/parsers/ragel/ruby/machines/received_machine.rb.rl +0 -37
  158. data/lib/mail/parsers/ragel/ruby/parser.rb.rl.erb +0 -37
  159. data/lib/mail/parsers/ragel/ruby.rb +0 -40
  160. 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.1
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: 2018-10-13 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
@@ -86,24 +80,29 @@ dependencies:
86
80
  - - ">="
87
81
  - !ruby/object:Gem::Version
88
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rufo
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
89
97
  description: A really Ruby Mail handler.
90
98
  email: raasdnil@gmail.com
91
99
  executables: []
92
100
  extensions: []
93
101
  extra_rdoc_files:
94
102
  - README.md
95
- - CONTRIBUTING.md
96
- - CHANGELOG.rdoc
97
- - TODO.rdoc
98
103
  files:
99
- - CHANGELOG.rdoc
100
- - CONTRIBUTING.md
101
- - Dependencies.txt
102
- - Gemfile
103
104
  - MIT-LICENSE
104
105
  - README.md
105
- - Rakefile
106
- - TODO.rdoc
107
106
  - lib/mail.rb
108
107
  - lib/mail/attachments_list.rb
109
108
  - lib/mail/body.rb
@@ -112,8 +111,6 @@ files:
112
111
  - lib/mail/constants.rb
113
112
  - lib/mail/core_extensions/smtp.rb
114
113
  - lib/mail/core_extensions/string.rb
115
- - lib/mail/core_extensions/string/access.rb
116
- - lib/mail/core_extensions/string/multibyte.rb
117
114
  - lib/mail/elements.rb
118
115
  - lib/mail/elements/address.rb
119
116
  - lib/mail/elements/address_list.rb
@@ -132,6 +129,7 @@ files:
132
129
  - lib/mail/encodings/8bit.rb
133
130
  - lib/mail/encodings/base64.rb
134
131
  - lib/mail/encodings/binary.rb
132
+ - lib/mail/encodings/identity.rb
135
133
  - lib/mail/encodings/quoted_printable.rb
136
134
  - lib/mail/encodings/transfer_encoding.rb
137
135
  - lib/mail/encodings/unix_to_unix.rb
@@ -185,12 +183,12 @@ files:
185
183
  - lib/mail/message.rb
186
184
  - lib/mail/multibyte.rb
187
185
  - lib/mail/multibyte/chars.rb
188
- - lib/mail/multibyte/exceptions.rb
189
186
  - lib/mail/multibyte/unicode.rb
190
187
  - lib/mail/multibyte/utils.rb
191
188
  - lib/mail/network.rb
192
189
  - lib/mail/network/delivery_methods/exim.rb
193
190
  - lib/mail/network/delivery_methods/file_delivery.rb
191
+ - lib/mail/network/delivery_methods/logger_delivery.rb
194
192
  - lib/mail/network/delivery_methods/sendmail.rb
195
193
  - lib/mail/network/delivery_methods/smtp.rb
196
194
  - lib/mail/network/delivery_methods/smtp_connection.rb
@@ -199,47 +197,40 @@ files:
199
197
  - lib/mail/network/retriever_methods/imap.rb
200
198
  - lib/mail/network/retriever_methods/pop3.rb
201
199
  - lib/mail/network/retriever_methods/test_retriever.rb
200
+ - lib/mail/parser_tools.rb
202
201
  - lib/mail/parsers.rb
203
202
  - lib/mail/parsers/address_lists_parser.rb
203
+ - lib/mail/parsers/address_lists_parser.rl
204
204
  - lib/mail/parsers/content_disposition_parser.rb
205
+ - lib/mail/parsers/content_disposition_parser.rl
205
206
  - lib/mail/parsers/content_location_parser.rb
207
+ - lib/mail/parsers/content_location_parser.rl
206
208
  - lib/mail/parsers/content_transfer_encoding_parser.rb
209
+ - lib/mail/parsers/content_transfer_encoding_parser.rl
207
210
  - lib/mail/parsers/content_type_parser.rb
211
+ - lib/mail/parsers/content_type_parser.rl
208
212
  - lib/mail/parsers/date_time_parser.rb
213
+ - lib/mail/parsers/date_time_parser.rl
209
214
  - lib/mail/parsers/envelope_from_parser.rb
215
+ - lib/mail/parsers/envelope_from_parser.rl
210
216
  - lib/mail/parsers/message_ids_parser.rb
217
+ - lib/mail/parsers/message_ids_parser.rl
211
218
  - lib/mail/parsers/mime_version_parser.rb
219
+ - lib/mail/parsers/mime_version_parser.rl
212
220
  - 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
221
+ - lib/mail/parsers/phrase_lists_parser.rl
242
222
  - lib/mail/parsers/received_parser.rb
223
+ - lib/mail/parsers/received_parser.rl
224
+ - lib/mail/parsers/rfc2045_content_transfer_encoding.rl
225
+ - lib/mail/parsers/rfc2045_content_type.rl
226
+ - lib/mail/parsers/rfc2045_mime.rl
227
+ - lib/mail/parsers/rfc2183_content_disposition.rl
228
+ - lib/mail/parsers/rfc3629_utf8.rl
229
+ - lib/mail/parsers/rfc5234_abnf_core_rules.rl
230
+ - lib/mail/parsers/rfc5322.rl
231
+ - lib/mail/parsers/rfc5322_address.rl
232
+ - lib/mail/parsers/rfc5322_date_time.rl
233
+ - lib/mail/parsers/rfc5322_lexical_tokens.rl
243
234
  - lib/mail/part.rb
244
235
  - lib/mail/parts_list.rb
245
236
  - lib/mail/utilities.rb
@@ -269,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
269
260
  version: '0'
270
261
  requirements: []
271
262
  rubyforge_project:
272
- rubygems_version: 2.6.11
263
+ rubygems_version: 2.7.6
273
264
  signing_key:
274
265
  specification_version: 4
275
266
  summary: Mail provides a nice Ruby DSL for making, sending and reading emails.