mail 2.6.6 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
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.