mail 2.6.4.rc2 → 2.6.5

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.rdoc +15 -1
  3. data/Gemfile +7 -4
  4. data/MIT-LICENSE +1 -1
  5. data/README.md +5 -2
  6. data/lib/mail/attachments_list.rb +3 -1
  7. data/lib/mail/body.rb +1 -0
  8. data/lib/mail/check_delivery_params.rb +1 -0
  9. data/lib/mail/configuration.rb +1 -0
  10. data/lib/mail/constants.rb +1 -0
  11. data/lib/mail/core_extensions/smtp.rb +1 -0
  12. data/lib/mail/core_extensions/string/access.rb +1 -0
  13. data/lib/mail/core_extensions/string/multibyte.rb +1 -0
  14. data/lib/mail/core_extensions/string.rb +1 -0
  15. data/lib/mail/elements/address.rb +10 -5
  16. data/lib/mail/elements/address_list.rb +2 -1
  17. data/lib/mail/elements/content_disposition_element.rb +1 -0
  18. data/lib/mail/elements/content_location_element.rb +6 -5
  19. data/lib/mail/elements/content_transfer_encoding_element.rb +1 -0
  20. data/lib/mail/elements/content_type_element.rb +1 -0
  21. data/lib/mail/elements/date_time_element.rb +1 -0
  22. data/lib/mail/elements/envelope_from_element.rb +1 -0
  23. data/lib/mail/elements/message_ids_element.rb +7 -5
  24. data/lib/mail/elements/mime_version_element.rb +1 -0
  25. data/lib/mail/elements/phrase_list.rb +1 -0
  26. data/lib/mail/elements/received_element.rb +1 -0
  27. data/lib/mail/elements.rb +1 -0
  28. data/lib/mail/encodings/7bit.rb +1 -0
  29. data/lib/mail/encodings/8bit.rb +1 -0
  30. data/lib/mail/encodings/base64.rb +1 -0
  31. data/lib/mail/encodings/binary.rb +1 -0
  32. data/lib/mail/encodings/quoted_printable.rb +1 -0
  33. data/lib/mail/encodings/transfer_encoding.rb +1 -0
  34. data/lib/mail/encodings/unix_to_unix.rb +1 -0
  35. data/lib/mail/encodings.rb +1 -0
  36. data/lib/mail/envelope.rb +1 -0
  37. data/lib/mail/field.rb +1 -0
  38. data/lib/mail/field_list.rb +1 -0
  39. data/lib/mail/fields/bcc_field.rb +1 -0
  40. data/lib/mail/fields/cc_field.rb +1 -0
  41. data/lib/mail/fields/comments_field.rb +1 -0
  42. data/lib/mail/fields/common/address_container.rb +3 -2
  43. data/lib/mail/fields/common/common_address.rb +1 -0
  44. data/lib/mail/fields/common/common_date.rb +1 -0
  45. data/lib/mail/fields/common/common_field.rb +4 -1
  46. data/lib/mail/fields/common/common_message_id.rb +1 -0
  47. data/lib/mail/fields/common/parameter_hash.rb +1 -0
  48. data/lib/mail/fields/content_description_field.rb +1 -0
  49. data/lib/mail/fields/content_disposition_field.rb +2 -1
  50. data/lib/mail/fields/content_id_field.rb +1 -0
  51. data/lib/mail/fields/content_location_field.rb +1 -0
  52. data/lib/mail/fields/content_transfer_encoding_field.rb +1 -0
  53. data/lib/mail/fields/content_type_field.rb +2 -1
  54. data/lib/mail/fields/date_field.rb +1 -0
  55. data/lib/mail/fields/from_field.rb +1 -0
  56. data/lib/mail/fields/in_reply_to_field.rb +1 -0
  57. data/lib/mail/fields/keywords_field.rb +1 -0
  58. data/lib/mail/fields/message_id_field.rb +1 -0
  59. data/lib/mail/fields/mime_version_field.rb +1 -0
  60. data/lib/mail/fields/optional_field.rb +1 -0
  61. data/lib/mail/fields/received_field.rb +1 -0
  62. data/lib/mail/fields/references_field.rb +1 -0
  63. data/lib/mail/fields/reply_to_field.rb +1 -0
  64. data/lib/mail/fields/resent_bcc_field.rb +1 -0
  65. data/lib/mail/fields/resent_cc_field.rb +1 -0
  66. data/lib/mail/fields/resent_date_field.rb +1 -0
  67. data/lib/mail/fields/resent_from_field.rb +1 -0
  68. data/lib/mail/fields/resent_message_id_field.rb +1 -0
  69. data/lib/mail/fields/resent_sender_field.rb +1 -0
  70. data/lib/mail/fields/resent_to_field.rb +1 -0
  71. data/lib/mail/fields/return_path_field.rb +1 -0
  72. data/lib/mail/fields/sender_field.rb +1 -0
  73. data/lib/mail/fields/structured_field.rb +1 -0
  74. data/lib/mail/fields/subject_field.rb +1 -0
  75. data/lib/mail/fields/to_field.rb +1 -0
  76. data/lib/mail/fields/unstructured_field.rb +2 -1
  77. data/lib/mail/fields.rb +1 -0
  78. data/lib/mail/header.rb +1 -0
  79. data/lib/mail/indifferent_hash.rb +1 -0
  80. data/lib/mail/mail.rb +1 -0
  81. data/lib/mail/matchers/attachment_matchers.rb +1 -0
  82. data/lib/mail/matchers/has_sent_mail.rb +1 -0
  83. data/lib/mail/message.rb +1 -0
  84. data/lib/mail/multibyte/chars.rb +3 -2
  85. data/lib/mail/multibyte/exceptions.rb +1 -0
  86. data/lib/mail/multibyte/unicode.rb +1 -0
  87. data/lib/mail/multibyte/utils.rb +1 -0
  88. data/lib/mail/multibyte.rb +1 -0
  89. data/lib/mail/network/delivery_methods/exim.rb +1 -0
  90. data/lib/mail/network/delivery_methods/file_delivery.rb +1 -0
  91. data/lib/mail/network/delivery_methods/sendmail.rb +1 -0
  92. data/lib/mail/network/delivery_methods/smtp.rb +1 -0
  93. data/lib/mail/network/delivery_methods/smtp_connection.rb +1 -0
  94. data/lib/mail/network/delivery_methods/test_mailer.rb +1 -0
  95. data/lib/mail/network/retriever_methods/base.rb +1 -0
  96. data/lib/mail/network/retriever_methods/imap.rb +1 -0
  97. data/lib/mail/network/retriever_methods/pop3.rb +1 -0
  98. data/lib/mail/network/retriever_methods/test_retriever.rb +2 -1
  99. data/lib/mail/network.rb +1 -0
  100. data/lib/mail/parsers/address_lists_parser.rb +2 -1
  101. data/lib/mail/parsers/content_disposition_parser.rb +1 -0
  102. data/lib/mail/parsers/content_location_parser.rb +1 -0
  103. data/lib/mail/parsers/content_transfer_encoding_parser.rb +1 -0
  104. data/lib/mail/parsers/content_type_parser.rb +1 -0
  105. data/lib/mail/parsers/date_time_parser.rb +3 -0
  106. data/lib/mail/parsers/envelope_from_parser.rb +1 -0
  107. data/lib/mail/parsers/message_ids_parser.rb +1 -0
  108. data/lib/mail/parsers/mime_version_parser.rb +1 -0
  109. data/lib/mail/parsers/phrase_lists_parser.rb +3 -0
  110. data/lib/mail/parsers/ragel.rb +1 -0
  111. data/lib/mail/parsers/received_parser.rb +2 -0
  112. data/lib/mail/parsers.rb +1 -0
  113. data/lib/mail/part.rb +1 -0
  114. data/lib/mail/parts_list.rb +1 -0
  115. data/lib/mail/utilities.rb +42 -10
  116. data/lib/mail/version.rb +3 -2
  117. data/lib/mail/version_specific/ruby_1_8.rb +1 -0
  118. data/lib/mail/version_specific/ruby_1_9.rb +4 -0
  119. data/lib/mail.rb +1 -0
  120. metadata +5 -5
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # = Resent-Cc Field
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # resent-date = "Resent-Date:" date-time CRLF
4
5
  require 'mail/fields/common/common_date'
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # = Resent-From Field
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # resent-msg-id = "Resent-Message-ID:" msg-id CRLF
4
5
  require 'mail/fields/common/common_message_id'
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # = Resent-Sender Field
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # = Resent-To Field
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # 4.4.3. REPLY-TO / RESENT-REPLY-TO
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # = Sender Field
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'mail/fields/common/common_field'
3
4
 
4
5
  module Mail
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # subject = "Subject:" unstructured CRLF
4
5
  module Mail
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  #
3
4
  # = To Field
4
5
  #
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'mail/fields/common/common_field'
3
4
 
4
5
  module Mail
@@ -127,7 +128,7 @@ module Mail
127
128
  if first
128
129
  first = !first
129
130
  else
130
- word = " " << word
131
+ word = " #{word}"
131
132
  end
132
133
  if word.not_ascii_only?
133
134
  word
data/lib/mail/fields.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  register_autoload :UnstructuredField, 'mail/fields/unstructured_field'
3
4
  register_autoload :StructuredField, 'mail/fields/structured_field'
data/lib/mail/header.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Mail
3
4
 
4
5
  # Provides access to a header object.
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  # This is an almost cut and paste from ActiveSupport v3.0.6, copied in here so that Mail
4
5
  # itself does not depend on ActiveSupport to avoid versioning conflicts
data/lib/mail/mail.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Mail
3
4
 
4
5
  # Allows you to create a new Mail::Message object.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  module Matchers
3
4
  def any_attachment
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  module Matchers
3
4
  def have_sent_email
data/lib/mail/message.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  require "yaml"
3
4
 
4
5
  module Mail
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail #:nodoc:
4
5
  module Multibyte #:nodoc:
@@ -268,12 +269,12 @@ module Mail #:nodoc:
268
269
  @wrapped_string[*args] = replace_by
269
270
  else
270
271
  result = Unicode.u_unpack(@wrapped_string)
271
- if args[0].is_a?(Fixnum)
272
+ if args[0].is_a?(Integer)
272
273
  raise IndexError, "index #{args[0]} out of string" if args[0] >= result.length
273
274
  min = args[0]
274
275
  max = args[1].nil? ? min : (min + args[1] - 1)
275
276
  range = Range.new(min, max)
276
- replace_by = [replace_by].pack('U') if replace_by.is_a?(Fixnum)
277
+ replace_by = [replace_by].pack('U') if replace_by.is_a?(Integer)
277
278
  elsif args.first.is_a?(Range)
278
279
  raise RangeError, "#{args[0]} out of range" if args[0].min >= result.length
279
280
  range = args[0]
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail #:nodoc:
4
5
  module Multibyte #:nodoc:
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  module Multibyte
3
4
  module Unicode
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail #:nodoc:
4
5
  module Multibyte #:nodoc:
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Mail #:nodoc:
3
4
  module Multibyte
4
5
  require 'mail/multibyte/exceptions'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
 
3
4
  # A delivery method implementation which sends via exim.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'mail/check_delivery_params'
2
3
 
3
4
  module Mail
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'mail/check_delivery_params'
2
3
 
3
4
  module Mail
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'mail/check_delivery_params'
2
3
 
3
4
  module Mail
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'mail/check_delivery_params'
2
3
 
3
4
  module Mail
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'mail/check_delivery_params'
2
3
 
3
4
  module Mail
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail
4
5
 
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail
4
5
  # The IMAP retriever allows to get the last, first or all emails from a IMAP server.
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail
4
5
  # The Pop3 retriever allows to get the last, first or all emails from a POP3 server.
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail
4
5
 
@@ -24,7 +25,7 @@ module Mail
24
25
  emails_index.reverse! if options[:what] == :last
25
26
  emails_index = case count = options[:count]
26
27
  when :all then emails_index
27
- when Fixnum then emails_index[0, count]
28
+ when Integer then emails_index[0, count]
28
29
  else
29
30
  raise 'Invalid count option value: ' + count.inspect
30
31
  end
data/lib/mail/network.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'mail/network/retriever_methods/base'
2
3
 
3
4
  module Mail
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class AddressListsParser
3
4
  include Mail::Utilities
@@ -91,7 +92,7 @@ module Mail::Parsers
91
92
  # version.
92
93
  when :angle_addr_s
93
94
  if qstr
94
- address.display_name = qstr
95
+ address.display_name = Mail::Utilities.unescape(qstr)
95
96
  qstr = nil
96
97
  elsif phrase_e
97
98
  address.display_name = s[phrase_s..phrase_e].strip
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class ContentDispositionParser
3
4
  include Mail::Utilities
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class ContentLocationParser
3
4
  def parse(s)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class ContentTransferEncodingParser
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class ContentTypeParser
3
4
  include Mail::Utilities
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class DateTimeParser
3
4
  include Mail::Utilities
4
5
 
5
6
  def parse(s)
7
+ raise Mail::Field::ParseError.new(Mail::DateTimeElement, s, "nil is an invalid DateTime") if s.nil?
8
+
6
9
  date_time = DateTimeStruct.new([])
7
10
 
8
11
  actions, error = Ragel.parse(:date_time, s)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class EnvelopeFromParser
3
4
  def parse(s)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class MessageIdsParser
3
4
  def parse(s)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class MimeVersionParser
3
4
  include Mail::Utilities
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class PhraseListsParser
3
4
 
4
5
  def parse(s)
6
+ raise Mail::Field::ParseError.new(Mail::PhraseList, s, 'nil is invalid') if s.nil?
7
+
5
8
  actions, error = Ragel.parse(:phrase_lists, s)
6
9
  if error
7
10
  raise Mail::Field::ParseError.new(Mail::PhraseList, s, error)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  module Parsers
3
4
  module Ragel
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  module Mail::Parsers
2
3
  class ReceivedParser
3
4
 
4
5
  def parse(s)
6
+ raise Mail::Field::ParseError.new(Mail::ReceivedElement, s, 'nil is invalid') if s.nil?
5
7
  actions, error = Ragel.parse(:received, s)
6
8
  if error
7
9
  raise Mail::Field::ParseError.new(Mail::ReceivedElement, s, error)
data/lib/mail/parsers.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  module Parsers
3
4
 
data/lib/mail/part.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Mail
3
4
  class Part < Message
4
5
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'delegate'
2
3
 
3
4
  module Mail
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Mail
3
4
  module Utilities
4
5
 
@@ -23,13 +24,11 @@ module Mail
23
24
  def quote_phrase( str )
24
25
  if RUBY_VERSION >= '1.9'
25
26
  original_encoding = str.encoding
26
- str.force_encoding('ASCII-8BIT')
27
- if (PHRASE_UNSAFE === str)
28
- quoted_str = dquote(str).force_encoding(original_encoding)
29
- str.force_encoding(original_encoding)
30
- quoted_str
27
+ ascii_str = str.dup.force_encoding('ASCII-8BIT')
28
+ if (PHRASE_UNSAFE === ascii_str)
29
+ dquote(ascii_str).force_encoding(original_encoding)
31
30
  else
32
- str.force_encoding(original_encoding)
31
+ str
33
32
  end
34
33
  else
35
34
  (PHRASE_UNSAFE === str) ? dquote(str) : str
@@ -73,12 +72,26 @@ module Mail
73
72
  # unqoute(string) #=> 'This is "a string"'
74
73
  def unquote( str )
75
74
  if str =~ /^"(.*?)"$/
76
- $1.gsub(/\\(.)/, '\1')
75
+ unescape($1)
77
76
  else
78
77
  str
79
78
  end
80
79
  end
81
80
 
81
+ # Removes any \-escaping.
82
+ #
83
+ # Example:
84
+ #
85
+ # string = 'This is \"a string\"'
86
+ # unescape(string) #=> 'This is "a string"'
87
+ #
88
+ # string = '"This is \"a string\""'
89
+ # unescape(string) #=> '"This is "a string""'
90
+ def unescape( str )
91
+ str.gsub(/\\(.)/, '\1')
92
+ end
93
+ module_function :unescape
94
+
82
95
  # Wraps a string in parenthesis and escapes any that are in the string itself.
83
96
  #
84
97
  # Example:
@@ -223,7 +236,26 @@ module Mail
223
236
  enum.each_with_index.map(&block)
224
237
  end
225
238
 
226
- def self.to_lf input
239
+ end
240
+
241
+ # Test String#encode works correctly with line endings.
242
+ # Some versions of Ruby (e.g. MRI <1.9, JRuby, Rubinius) line ending
243
+ # normalization does not work correctly or did not have #encode.
244
+ if ("\r".encode(:universal_newline => true) rescue nil) == LF &&
245
+ (LF.encode(:crlf_newline => true) rescue nil) == CRLF
246
+ # Using String#encode is better performing than Regexp
247
+
248
+ def self.to_lf(input)
249
+ input.kind_of?(String) ? input.to_str.encode(input.encoding, :universal_newline => true) : ''
250
+ end
251
+
252
+ def self.to_crlf(input)
253
+ input.kind_of?(String) ? input.to_str.encode(input.encoding, :universal_newline => true).encode!(input.encoding, :crlf_newline => true) : ''
254
+ end
255
+
256
+ else
257
+
258
+ def self.to_lf(input)
227
259
  input.kind_of?(String) ? input.to_str.gsub(/\r\n|\r/, LF) : ''
228
260
  end
229
261
 
@@ -236,7 +268,7 @@ module Mail
236
268
  CRLF_REGEX = /\n|\r\n|\r/
237
269
  end
238
270
 
239
- def self.to_crlf input
271
+ def self.to_crlf(input)
240
272
  input.kind_of?(String) ? input.to_str.gsub(CRLF_REGEX, CRLF) : ''
241
273
  end
242
274
 
@@ -245,7 +277,7 @@ module Mail
245
277
  # Returns true if the object is considered blank.
246
278
  # A blank includes things like '', ' ', nil,
247
279
  # and arrays and hashes that have nothing in them.
248
- #
280
+ #
249
281
  # This logic is mostly shared with ActiveSupport's blank?
250
282
  def self.blank?(value)
251
283
  if value.kind_of?(NilClass)
data/lib/mail/version.rb CHANGED
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  module Mail
2
3
  module VERSION
3
4
 
4
5
  MAJOR = 2
5
6
  MINOR = 6
6
- PATCH = 4
7
- BUILD = 'rc2'
7
+ PATCH = 5
8
+ BUILD = nil
8
9
 
9
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
10
11
 
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail
4
5
  class Ruby18
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
4
  module Mail
4
5
  class Ruby19
@@ -58,6 +59,9 @@ module Mail
58
59
  end
59
60
 
60
61
  def Ruby19.decode_base64(str)
62
+ if !str.end_with?("=") && str.length % 4 != 0
63
+ str = str.ljust((str.length + 3) & ~3, "=")
64
+ end
61
65
  str.unpack( 'm' ).first
62
66
  end
63
67
 
data/lib/mail.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
  module Mail # :doc:
3
4
 
4
5
  require 'date'
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.4.rc2
4
+ version: 2.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikel Lindsaar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-14 00:00:00.000000000 Z
11
+ date: 2017-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mime-types
@@ -264,12 +264,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
264
264
  version: '0'
265
265
  required_rubygems_version: !ruby/object:Gem::Requirement
266
266
  requirements:
267
- - - ">"
267
+ - - ">="
268
268
  - !ruby/object:Gem::Version
269
- version: 1.3.1
269
+ version: '0'
270
270
  requirements: []
271
271
  rubyforge_project:
272
- rubygems_version: 2.5.1
272
+ rubygems_version: 2.6.10
273
273
  signing_key:
274
274
  specification_version: 4
275
275
  summary: Mail provides a nice Ruby DSL for making, sending and reading emails.