mail 2.6.3 → 2.6.4.rc2

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +22 -0
  3. data/Gemfile +1 -5
  4. data/MIT-LICENSE +1 -1
  5. data/README.md +38 -2
  6. data/Rakefile +2 -2
  7. data/lib/mail/body.rb +4 -4
  8. data/lib/mail/check_delivery_params.rb +3 -3
  9. data/lib/mail/constants.rb +3 -2
  10. data/lib/mail/core_extensions/string.rb +0 -26
  11. data/lib/mail/elements/address.rb +7 -7
  12. data/lib/mail/encodings/8bit.rb +7 -2
  13. data/lib/mail/encodings/base64.rb +6 -1
  14. data/lib/mail/encodings/quoted_printable.rb +8 -3
  15. data/lib/mail/encodings/transfer_encoding.rb +26 -17
  16. data/lib/mail/encodings.rb +25 -28
  17. data/lib/mail/field.rb +18 -4
  18. data/lib/mail/fields/bcc_field.rb +14 -3
  19. data/lib/mail/fields/cc_field.rb +0 -1
  20. data/lib/mail/fields/common/common_address.rb +7 -7
  21. data/lib/mail/fields/common/common_date.rb +1 -1
  22. data/lib/mail/fields/common/common_field.rb +1 -1
  23. data/lib/mail/fields/common/common_message_id.rb +2 -2
  24. data/lib/mail/fields/content_disposition_field.rb +11 -11
  25. data/lib/mail/fields/content_id_field.rb +2 -2
  26. data/lib/mail/fields/content_location_field.rb +1 -1
  27. data/lib/mail/fields/content_transfer_encoding_field.rb +1 -1
  28. data/lib/mail/fields/content_type_field.rb +1 -1
  29. data/lib/mail/fields/date_field.rb +1 -1
  30. data/lib/mail/fields/from_field.rb +0 -1
  31. data/lib/mail/fields/keywords_field.rb +1 -2
  32. data/lib/mail/fields/message_id_field.rb +1 -1
  33. data/lib/mail/fields/mime_version_field.rb +2 -2
  34. data/lib/mail/fields/received_field.rb +3 -3
  35. data/lib/mail/fields/reply_to_field.rb +0 -1
  36. data/lib/mail/fields/resent_bcc_field.rb +0 -1
  37. data/lib/mail/fields/resent_cc_field.rb +0 -1
  38. data/lib/mail/fields/resent_date_field.rb +1 -1
  39. data/lib/mail/fields/resent_from_field.rb +0 -1
  40. data/lib/mail/fields/resent_sender_field.rb +0 -1
  41. data/lib/mail/fields/resent_to_field.rb +0 -1
  42. data/lib/mail/fields/return_path_field.rb +0 -1
  43. data/lib/mail/fields/sender_field.rb +0 -1
  44. data/lib/mail/fields/to_field.rb +0 -1
  45. data/lib/mail/fields/unstructured_field.rb +2 -2
  46. data/lib/mail/header.rb +5 -5
  47. data/lib/mail/matchers/attachment_matchers.rb +28 -0
  48. data/lib/mail/matchers/has_sent_mail.rb +30 -7
  49. data/lib/mail/message.rb +16 -22
  50. data/lib/mail/multibyte/unicode.rb +20 -16
  51. data/lib/mail/network/delivery_methods/exim.rb +1 -1
  52. data/lib/mail/network/delivery_methods/sendmail.rb +1 -1
  53. data/lib/mail/parsers/address_lists_parser.rb +1 -1
  54. data/lib/mail/parsers/content_disposition_parser.rb +1 -1
  55. data/lib/mail/parsers/content_location_parser.rb +1 -1
  56. data/lib/mail/parsers/content_transfer_encoding_parser.rb +1 -1
  57. data/lib/mail/parsers/envelope_from_parser.rb +1 -1
  58. data/lib/mail/parsers/message_ids_parser.rb +1 -1
  59. data/lib/mail/parsers/mime_version_parser.rb +1 -1
  60. data/lib/mail/part.rb +4 -2
  61. data/lib/mail/parts_list.rb +25 -8
  62. data/lib/mail/utilities.rb +36 -0
  63. data/lib/mail/values/unicode_tables.dat +0 -0
  64. data/lib/mail/version.rb +2 -2
  65. data/lib/mail/version_specific/ruby_1_8.rb +10 -4
  66. data/lib/mail/version_specific/ruby_1_9.rb +39 -10
  67. data/lib/mail.rb +8 -3
  68. metadata +10 -11
  69. data/lib/mail/core_extensions/nil.rb +0 -19
  70. data/lib/mail/core_extensions/object.rb +0 -13
@@ -1,6 +1,26 @@
1
1
  module Mail
2
2
  module Multibyte
3
3
  module Unicode
4
+ # Adapted from https://github.com/rails/rails/blob/master/activesupport/lib/active_support/multibyte/unicode.rb
5
+ # under the MIT license
6
+ # The Unicode version that is supported by the implementation
7
+ UNICODE_VERSION = '7.0.0'
8
+
9
+ # Holds data about a codepoint in the Unicode database.
10
+ class Codepoint
11
+ attr_accessor :code, :combining_class, :decomp_type, :decomp_mapping, :uppercase_mapping, :lowercase_mapping
12
+
13
+ # Initializing Codepoint object with default values
14
+ def initialize
15
+ @combining_class = 0
16
+ @uppercase_mapping = 0
17
+ @lowercase_mapping = 0
18
+ end
19
+
20
+ def swapcase_mapping
21
+ uppercase_mapping > 0 ? uppercase_mapping : lowercase_mapping
22
+ end
23
+ end
4
24
 
5
25
  extend self
6
26
 
@@ -8,9 +28,6 @@ module Mail
8
28
  # information about normalization.
9
29
  NORMALIZATION_FORMS = [:c, :kc, :d, :kd]
10
30
 
11
- # The Unicode version that is supported by the implementation
12
- UNICODE_VERSION = '5.2.0'
13
-
14
31
  # The default normalization used for operations that require normalization. It can be set to any of the
15
32
  # normalizations in NORMALIZATION_FORMS.
16
33
  #
@@ -308,11 +325,6 @@ module Mail
308
325
  end.pack('U*')
309
326
  end
310
327
 
311
- # Holds data about a codepoint in the Unicode database
312
- class Codepoint
313
- attr_accessor :code, :combining_class, :decomp_type, :decomp_mapping, :uppercase_mapping, :lowercase_mapping
314
- end
315
-
316
328
  # Holds static data from the Unicode database
317
329
  class UnicodeDatabase
318
330
  ATTRIBUTES = :codepoints, :composition_exclusion, :composition_map, :boundary, :cp1252
@@ -390,11 +402,3 @@ module Mail
390
402
  end
391
403
  end
392
404
  end
393
-
394
- unless defined?(ActiveSupport)
395
- module ActiveSupport
396
- unless const_defined?(:Multibyte)
397
- Multibyte = Mail::Multibyte
398
- end
399
- end
400
- end
@@ -43,7 +43,7 @@ module Mail
43
43
 
44
44
  def self.call(path, arguments, destinations, mail)
45
45
  popen "#{path} #{arguments}" do |io|
46
- io.puts mail.encoded.to_lf
46
+ io.puts ::Mail::Utilities.to_lf(mail.encoded)
47
47
  io.flush
48
48
  end
49
49
  end
@@ -58,7 +58,7 @@ module Mail
58
58
 
59
59
  def self.call(path, arguments, destinations, encoded_message)
60
60
  popen "#{path} #{arguments} #{destinations}" do |io|
61
- io.puts encoded_message.to_lf
61
+ io.puts ::Mail::Utilities.to_lf(encoded_message)
62
62
  io.flush
63
63
  end
64
64
  end
@@ -5,7 +5,7 @@ module Mail::Parsers
5
5
  def parse(s)
6
6
  address_list = AddressListStruct.new([],[])
7
7
 
8
- if s.blank?
8
+ if Mail::Utilities.blank?(s)
9
9
  return address_list
10
10
  end
11
11
 
@@ -4,7 +4,7 @@ module Mail::Parsers
4
4
 
5
5
  def parse(s)
6
6
  content_disposition = ContentDispositionStruct.new("", nil)
7
- if s.blank?
7
+ if Mail::Utilities.blank?(s)
8
8
  return content_disposition
9
9
  end
10
10
 
@@ -2,7 +2,7 @@ module Mail::Parsers
2
2
  class ContentLocationParser
3
3
  def parse(s)
4
4
  content_location = ContentLocationStruct.new(nil)
5
- if s.blank?
5
+ if Mail::Utilities.blank?(s)
6
6
  return content_location
7
7
  end
8
8
 
@@ -3,7 +3,7 @@ module Mail::Parsers
3
3
 
4
4
  def parse(s)
5
5
  content_transfer_encoding = ContentTransferEncodingStruct.new("")
6
- if s.blank?
6
+ if Mail::Utilities.blank?(s)
7
7
  return content_transfer_encoding
8
8
  end
9
9
 
@@ -2,7 +2,7 @@ module Mail::Parsers
2
2
  class EnvelopeFromParser
3
3
  def parse(s)
4
4
  envelope_from = EnvelopeFromStruct.new
5
- if s.blank?
5
+ if Mail::Utilities.blank?(s)
6
6
  return envelope_from
7
7
  end
8
8
 
@@ -1,7 +1,7 @@
1
1
  module Mail::Parsers
2
2
  class MessageIdsParser
3
3
  def parse(s)
4
- if s.blank?
4
+ if Mail::Utilities.blank?(s)
5
5
  return MessageIdsStruct.new
6
6
  end
7
7
 
@@ -3,7 +3,7 @@ module Mail::Parsers
3
3
  include Mail::Utilities
4
4
 
5
5
  def parse(s)
6
- if s.blank?
6
+ if Mail::Utilities.blank?(s)
7
7
  return MimeVersionStruct.new("", nil)
8
8
  end
9
9
 
data/lib/mail/part.rb CHANGED
@@ -34,7 +34,7 @@ module Mail
34
34
  end
35
35
 
36
36
  def inline?
37
- header[:content_disposition].disposition_type == 'inline' if header[:content_disposition]
37
+ header[:content_disposition].disposition_type == 'inline' if header[:content_disposition].respond_to?(:disposition_type)
38
38
  end
39
39
 
40
40
  def add_required_fields
@@ -94,8 +94,10 @@ module Mail
94
94
  def get_return_values(key)
95
95
  if delivery_status_data[key].is_a?(Array)
96
96
  delivery_status_data[key].map { |a| a.value }
97
- else
97
+ elsif !delivery_status_data[key].nil?
98
98
  delivery_status_data[key].value
99
+ else
100
+ nil
99
101
  end
100
102
  end
101
103
 
@@ -1,8 +1,27 @@
1
+ require 'delegate'
2
+
1
3
  module Mail
2
- class PartsList < Array
4
+ class PartsList < DelegateClass(Array)
5
+ attr_reader :parts
6
+
7
+ def initialize(*args)
8
+ @parts = Array.new(*args)
9
+ super @parts
10
+ end
11
+
12
+ # The #encode_with and #to_yaml methods are just implemented
13
+ # for the sake of backward compatibility ; the delegator does
14
+ # not correctly delegate these calls to the delegated object
15
+ def encode_with(coder) # :nodoc:
16
+ coder.represent_object(nil, @parts)
17
+ end
18
+
19
+ def to_yaml(options = {}) # :nodoc:
20
+ @parts.to_yaml(options)
21
+ end
3
22
 
4
23
  def attachments
5
- Mail::AttachmentsList.new(self)
24
+ Mail::AttachmentsList.new(@parts)
6
25
  end
7
26
 
8
27
  def collect
@@ -14,8 +33,6 @@ module Mail
14
33
  to_a
15
34
  end
16
35
  end
17
-
18
- undef :map
19
36
  alias_method :map, :collect
20
37
 
21
38
  def map!
@@ -27,20 +44,20 @@ module Mail
27
44
  end
28
45
 
29
46
  def sort
30
- self.class.new(super)
47
+ self.class.new(@parts.sort)
31
48
  end
32
49
 
33
50
  def sort!(order)
34
51
  # stable sort should be used to maintain the relative order as the parts are added
35
52
  i = 0;
36
- sorted = self.sort_by do |a|
53
+ sorted = @parts.sort_by do |a|
37
54
  # OK, 10000 is arbitrary... if anyone actually wants to explicitly sort 10000 parts of a
38
55
  # single email message... please show me a use case and I'll put more work into this method,
39
56
  # in the meantime, it works :)
40
57
  [get_order_value(a, order), i += 1]
41
58
  end
42
- self.clear
43
- sorted.each { |p| self << p }
59
+ @parts.clear
60
+ sorted.each { |p| @parts << p }
44
61
  end
45
62
 
46
63
  private
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  module Mail
3
3
  module Utilities
4
+
5
+ LF = "\n"
6
+ CRLF = "\r\n"
7
+
4
8
  include Constants
5
9
 
6
10
  # Returns true if the string supplied is free from characters not allowed as an ATOM
@@ -219,6 +223,38 @@ module Mail
219
223
  enum.each_with_index.map(&block)
220
224
  end
221
225
 
226
+ def self.to_lf input
227
+ input.kind_of?(String) ? input.to_str.gsub(/\r\n|\r/, LF) : ''
228
+ end
229
+
230
+ if RUBY_VERSION >= '1.9'
231
+ # This 1.9 only regex can save a reasonable amount of time (~20%)
232
+ # by not matching "\r\n" so the string is returned unchanged in
233
+ # the common case.
234
+ CRLF_REGEX = Regexp.new("(?<!\r)\n|\r(?!\n)")
235
+ else
236
+ CRLF_REGEX = /\n|\r\n|\r/
237
+ end
238
+
239
+ def self.to_crlf input
240
+ input.kind_of?(String) ? input.to_str.gsub(CRLF_REGEX, CRLF) : ''
241
+ end
242
+
243
+ end
244
+
245
+ # Returns true if the object is considered blank.
246
+ # A blank includes things like '', ' ', nil,
247
+ # and arrays and hashes that have nothing in them.
248
+ #
249
+ # This logic is mostly shared with ActiveSupport's blank?
250
+ def self.blank?(value)
251
+ if value.kind_of?(NilClass)
252
+ true
253
+ elsif value.kind_of?(String)
254
+ value !~ /\S/
255
+ else
256
+ value.respond_to?(:empty?) ? value.empty? : !value
257
+ end
222
258
  end
223
259
 
224
260
  end
Binary file
data/lib/mail/version.rb CHANGED
@@ -3,8 +3,8 @@ module Mail
3
3
 
4
4
  MAJOR = 2
5
5
  MINOR = 6
6
- PATCH = 3
7
- BUILD = nil
6
+ PATCH = 4
7
+ BUILD = 'rc2'
8
8
 
9
9
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
10
10
 
@@ -54,11 +54,15 @@ module Mail
54
54
  klass.const_get( string )
55
55
  end
56
56
 
57
+ def Ruby18.transcode_charset(str, from_encoding, to_encoding = 'UTF-8')
58
+ Iconv.conv("#{normalize_iconv_charset_encoding(to_encoding)}//IGNORE", normalize_iconv_charset_encoding(from_encoding), str)
59
+ end
60
+
57
61
  def Ruby18.b_value_encode(str, encoding)
58
62
  # Ruby 1.8 requires an encoding to work
59
63
  raise ArgumentError, "Must supply an encoding" if encoding.nil?
60
64
  encoding = encoding.to_s.upcase.gsub('_', '-')
61
- [Encodings::Base64.encode(str), fix_encoding(encoding)]
65
+ [Encodings::Base64.encode(str), normalize_iconv_charset_encoding(encoding)]
62
66
  end
63
67
 
64
68
  def Ruby18.b_value_decode(str)
@@ -66,7 +70,7 @@ module Mail
66
70
  if match
67
71
  encoding = match[1]
68
72
  str = Ruby18.decode_base64(match[2])
69
- str = Iconv.conv('UTF-8//IGNORE', fix_encoding(encoding), str)
73
+ str = transcode_charset(str, encoding)
70
74
  end
71
75
  str
72
76
  end
@@ -86,7 +90,7 @@ module Mail
86
90
  # Remove trailing = if it exists in a Q encoding
87
91
  string = string.sub(/\=$/, '')
88
92
  str = Encodings::QuotedPrintable.decode(string)
89
- str = Iconv.conv('UTF-8//IGNORE', fix_encoding(encoding), str)
93
+ str = transcode_charset(str, encoding)
90
94
  end
91
95
  str
92
96
  end
@@ -103,7 +107,7 @@ module Mail
103
107
 
104
108
  private
105
109
 
106
- def Ruby18.fix_encoding(encoding)
110
+ def Ruby18.normalize_iconv_charset_encoding(encoding)
107
111
  case encoding.upcase
108
112
  when 'UTF8', 'UTF_8'
109
113
  'UTF-8'
@@ -111,6 +115,8 @@ module Mail
111
115
  'UTF-16BE'
112
116
  when 'UTF32', 'UTF-32'
113
117
  'UTF-32BE'
118
+ when 'KS_C_5601-1987'
119
+ 'CP949'
114
120
  else
115
121
  encoding
116
122
  end
@@ -73,6 +73,10 @@ module Mail
73
73
  klass.const_get( string )
74
74
  end
75
75
 
76
+ def Ruby19.transcode_charset(str, from_encoding, to_encoding = Encoding::UTF_8)
77
+ charset_encoder.encode(str.dup, from_encoding).encode(to_encoding, :undef => :replace, :invalid => :replace, :replace => '')
78
+ end
79
+
76
80
  def Ruby19.b_value_encode(str, encoding = nil)
77
81
  encoding = str.encoding.to_s
78
82
  [Ruby19.encode_base64(str), encoding]
@@ -140,37 +144,38 @@ module Mail
140
144
  # Encoding.list.map { |e| [e.to_s.upcase == pick_encoding(e.to_s.downcase.gsub("-", "")), e.to_s] }.select {|a,b| !b}
141
145
  # Encoding.list.map { |e| [e.to_s == pick_encoding(e.to_s), e.to_s] }.select {|a,b| !b}
142
146
  def Ruby19.pick_encoding(charset)
143
- case charset
147
+ charset = charset.to_s
148
+ encoding = case charset.downcase
144
149
 
145
150
  # ISO-8859-8-I etc. http://en.wikipedia.org/wiki/ISO-8859-8-I
146
- when /^iso-?8859-(\d+)(-i)?$/i
151
+ when /^iso[-_]?8859-(\d+)(-i)?$/
147
152
  "ISO-8859-#{$1}"
148
153
 
149
154
  # ISO-8859-15, ISO-2022-JP and alike
150
- when /iso-?(\d{4})-?(\w{1,2})/i
155
+ when /^iso[-_]?(\d{4})-?(\w{1,2})$/
151
156
  "ISO-#{$1}-#{$2}"
152
157
 
153
158
  # "ISO-2022-JP-KDDI" and alike
154
- when /iso-?(\d{4})-?(\w{1,2})-?(\w*)/i
159
+ when /^iso[-_]?(\d{4})-?(\w{1,2})-?(\w*)$/
155
160
  "ISO-#{$1}-#{$2}-#{$3}"
156
161
 
157
162
  # UTF-8, UTF-32BE and alike
158
- when /utf[\-_]?(\d{1,2})?(\w{1,2})/i
163
+ when /^utf[\-_]?(\d{1,2})?(\w{1,2})$/
159
164
  "UTF-#{$1}#{$2}".gsub(/\A(UTF-(?:16|32))\z/, '\\1BE')
160
165
 
161
166
  # Windows-1252 and alike
162
- when /Windows-?(.*)/i
167
+ when /^windows-?(.*)$/
163
168
  "Windows-#{$1}"
164
169
 
165
- when /^8bit$/
170
+ when '8bit'
166
171
  Encoding::ASCII_8BIT
167
172
 
168
173
  # alternatives/misspellings of us-ascii seen in the wild
169
- when /^iso-?646(-us)?$/i, /us=ascii/i
174
+ when /^iso[-_]?646(-us)?$/, 'us=ascii'
170
175
  Encoding::ASCII
171
176
 
172
177
  # Microsoft-specific alias for MACROMAN
173
- when /^macintosh$/i
178
+ when 'macintosh'
174
179
  Encoding::MACROMAN
175
180
 
176
181
  # Microsoft-specific alias for CP949 (Korean)
@@ -182,12 +187,36 @@ module Mail
182
187
  Encoding::Shift_JIS
183
188
 
184
189
  # GB2312 (Chinese charset) is a subset of GB18030 (its replacement)
185
- when /gb2312/i
190
+ when 'gb2312'
186
191
  Encoding::GB18030
187
192
 
193
+ when 'cp-850'
194
+ Encoding::CP850
195
+
196
+ when 'latin2'
197
+ Encoding::ISO_8859_2
198
+
188
199
  else
189
200
  charset
190
201
  end
202
+
203
+ convert_to_encoding(encoding)
204
+ end
205
+
206
+ class << self
207
+ private
208
+
209
+ def convert_to_encoding(encoding)
210
+ if encoding.is_a?(Encoding)
211
+ encoding
212
+ else
213
+ begin
214
+ Encoding.find(encoding)
215
+ rescue ArgumentError
216
+ Encoding::BINARY
217
+ end
218
+ end
219
+ end
191
220
  end
192
221
  end
193
222
  end
data/lib/mail.rb CHANGED
@@ -6,7 +6,13 @@ module Mail # :doc:
6
6
 
7
7
  require 'uri'
8
8
  require 'net/smtp'
9
- require 'mime/types'
9
+
10
+ begin
11
+ # Use mime/types/columnar if available, for reduced memory usage
12
+ require 'mime/types/columnar'
13
+ rescue LoadError
14
+ require 'mime/types'
15
+ end
10
16
 
11
17
  if RUBY_VERSION <= '1.8.6'
12
18
  begin
@@ -26,8 +32,6 @@ module Mail # :doc:
26
32
 
27
33
  require 'mail/version'
28
34
 
29
- require 'mail/core_extensions/nil'
30
- require 'mail/core_extensions/object'
31
35
  require 'mail/core_extensions/string'
32
36
  require 'mail/core_extensions/smtp' if RUBY_VERSION < '1.9.3'
33
37
  require 'mail/indifferent_hash'
@@ -86,6 +90,7 @@ module Mail # :doc:
86
90
  require 'mail/encodings/unix_to_unix'
87
91
 
88
92
  require 'mail/matchers/has_sent_mail'
93
+ require 'mail/matchers/attachment_matchers.rb'
89
94
 
90
95
  # Finally... require all the Mail.methods
91
96
  require 'mail/mail'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.3
4
+ version: 2.6.4.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikel Lindsaar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-03 00:00:00.000000000 Z
11
+ date: 2016-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '1.16'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '3'
22
+ version: '4'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '1.16'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '3'
32
+ version: '4'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 3.0.0
67
+ version: '3.0'
68
68
  type: :development
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 3.0.0
74
+ version: '3.0'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: rdoc
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -110,8 +110,6 @@ files:
110
110
  - lib/mail/check_delivery_params.rb
111
111
  - lib/mail/configuration.rb
112
112
  - lib/mail/constants.rb
113
- - lib/mail/core_extensions/nil.rb
114
- - lib/mail/core_extensions/object.rb
115
113
  - lib/mail/core_extensions/smtp.rb
116
114
  - lib/mail/core_extensions/string.rb
117
115
  - lib/mail/core_extensions/string/access.rb
@@ -182,6 +180,7 @@ files:
182
180
  - lib/mail/header.rb
183
181
  - lib/mail/indifferent_hash.rb
184
182
  - lib/mail/mail.rb
183
+ - lib/mail/matchers/attachment_matchers.rb
185
184
  - lib/mail/matchers/has_sent_mail.rb
186
185
  - lib/mail/message.rb
187
186
  - lib/mail/multibyte.rb
@@ -265,12 +264,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
265
264
  version: '0'
266
265
  required_rubygems_version: !ruby/object:Gem::Requirement
267
266
  requirements:
268
- - - ">="
267
+ - - ">"
269
268
  - !ruby/object:Gem::Version
270
- version: '0'
269
+ version: 1.3.1
271
270
  requirements: []
272
271
  rubyforge_project:
273
- rubygems_version: 2.4.2
272
+ rubygems_version: 2.5.1
274
273
  signing_key:
275
274
  specification_version: 4
276
275
  summary: Mail provides a nice Ruby DSL for making, sending and reading emails.
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # This is not loaded if ActiveSupport is already loaded
4
-
5
- class NilClass #:nodoc:
6
- unless nil.respond_to? :blank?
7
- def blank?
8
- true
9
- end
10
- end
11
-
12
- def to_crlf
13
- ''
14
- end
15
-
16
- def to_lf
17
- ''
18
- end
19
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- unless Object.method_defined? :blank?
4
- class Object
5
- def blank?
6
- if respond_to?(:empty?)
7
- empty?
8
- else
9
- !self
10
- end
11
- end
12
- end
13
- end