mail 2.8.0.rc1 → 2.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ed25dc984368dd9a0032804a298eb6120e860357a70e7afc170108c700d430e
4
- data.tar.gz: 886556ae37645a3074ca43cf439388c4bcdd164cc4849de76df4cf19345f8893
3
+ metadata.gz: fa5b2d445e65e58dc7c1716cd6f2eebd4f2397548eb1aa1d9230222df09f6aa3
4
+ data.tar.gz: cae304c28819a9903baf718616f8bb94e2ea860b0b2db43bfb3a3e0f9f12eaac
5
5
  SHA512:
6
- metadata.gz: 545f9b3a4a2cb1e752bad67e09cc0f3587d352471db140a35c6b885a9e64e5998b65032ff0d61f731bd1c27ed9a70a46a84c62051c5e419d99e7bf9a14dadbce
7
- data.tar.gz: 727057fbad623dc4eef62840a2b8a5cf65e6c8d469874d497de91e78c2df9ccdbde5090fdffb7b8843ca4e7416c04ca34ab8b544e848dbd62ec25751ac8649ed
6
+ metadata.gz: b72cc59bc03570e9f5347d796e38b6d4365143a7122e7353559314e82b2523479fb5adf90fce65d1d8a5c7e95a97964b2118c082de5b6bb535f663bf4056fa8f
7
+ data.tar.gz: 64157d336e45117c5e32db4a599ccf97e3b8b6aa2c761b4d5923f18b6b506ee8a20795ce5e9e8494c4d39c7c4784e2317da7674d89ffc75cb5fd6d19f5473073
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # This whole class and associated specs is deprecated and will go away in the version 3 release of mail.
4
+ module Mail
5
+ module CheckDeliveryParams #:nodoc:
6
+ class << self
7
+
8
+ extend Gem::Deprecate
9
+
10
+ def check(mail)
11
+ envelope = Mail::SmtpEnvelope.new(mail)
12
+ [ envelope.from,
13
+ envelope.to,
14
+ envelope.message ]
15
+ end
16
+ deprecate :check, 'Mail::SmtpEnvelope.new created in commit c106bebea066782a72e4f24dd37b532d95773df7', 2023, 6
17
+
18
+ def check_from(addr)
19
+ mail = Mail.new(from: 'deprecated@example.com', to: 'deprecated@example.com')
20
+ Mail::SmtpEnvelope.new(mail).send(:validate_addr, 'From', addr)
21
+ end
22
+ deprecate :check_from, :none, 2023, 6
23
+
24
+ def check_to(addrs)
25
+ mail = Mail.new(from: 'deprecated@example.com', to: 'deprecated@example.com')
26
+ Array(addrs).map do |addr|
27
+ Mail::SmtpEnvelope.new(mail).send(:validate_addr, 'To', addr)
28
+ end
29
+ end
30
+ deprecate :check_to, :none, 2023, 6
31
+
32
+ def check_addr(addr_name, addr)
33
+ mail = Mail.new(from: 'deprecated@example.com', to: 'deprecated@example.com')
34
+ Mail::SmtpEnvelope.new(mail).send(:validate_addr, addr_name, addr)
35
+ end
36
+ deprecate :check_addr, :none, 2023, 6
37
+
38
+ def validate_smtp_addr(addr)
39
+ if addr
40
+ if addr.bytesize > 2048
41
+ yield 'may not exceed 2kB'
42
+ end
43
+
44
+ if /[\r\n]/ =~ addr
45
+ yield 'may not contain CR or LF line breaks'
46
+ end
47
+ end
48
+
49
+ addr
50
+ end
51
+ deprecate :validate_smtp_addr, :none, 2023, 6
52
+
53
+ def check_message(message)
54
+ message = message.encoded if message.respond_to?(:encoded)
55
+
56
+ if Utilities.blank?(message)
57
+ raise ArgumentError, 'An encoded message is required to send an email'
58
+ end
59
+
60
+ message
61
+ end
62
+ deprecate :check_message, :none, 2023, 6
63
+ end
64
+ end
65
+ end
data/lib/mail/message.rb CHANGED
@@ -1496,7 +1496,7 @@ module Mail
1496
1496
  # Returns the character set defined in the content type field
1497
1497
  def charset
1498
1498
  if @header
1499
- has_content_type? ? content_type_parameters['charset'] : @charset
1499
+ has_content_type? && !multipart? ? content_type_parameters['charset'] : @charset
1500
1500
  else
1501
1501
  @charset
1502
1502
  end
@@ -2066,7 +2066,11 @@ module Mail
2066
2066
 
2067
2067
  def add_boundary
2068
2068
  unless body.boundary && boundary
2069
- header['content-type'] = 'multipart/mixed' unless header['content-type']
2069
+ unless header['content-type']
2070
+ _charset = charset
2071
+ header['content-type'] = 'multipart/mixed'
2072
+ header['content-type'].parameters[:charset] = _charset
2073
+ end
2070
2074
  header['content-type'].parameters[:boundary] = ContentTypeField.generate_boundary
2071
2075
  body.boundary = boundary
2072
2076
  end
@@ -111,17 +111,33 @@ module Mail
111
111
 
112
112
  def build_smtp_session
113
113
  Net::SMTP.new(settings[:address], settings[:port]).tap do |smtp|
114
- if settings[:tls] || settings[:ssl]
115
- if smtp.respond_to?(:enable_tls)
114
+ tls = settings[:tls] || settings[:ssl]
115
+ if !tls.nil?
116
+ case tls
117
+ when true
116
118
  smtp.enable_tls(ssl_context)
119
+ when false
120
+ smtp.disable_tls
121
+ else
122
+ raise ArgumentError, "Unrecognized :tls value #{settings[:tls].inspect}; expected true, false, or nil"
117
123
  end
118
- elsif settings[:enable_starttls]
119
- if smtp.respond_to?(:enable_starttls)
124
+ elsif settings.include?(:enable_starttls) && !settings[:enable_starttls].nil?
125
+ case settings[:enable_starttls]
126
+ when true
120
127
  smtp.enable_starttls(ssl_context)
128
+ when false
129
+ smtp.disable_starttls
130
+ else
131
+ raise ArgumentError, "Unrecognized :enable_starttls value #{settings[:enable_starttls].inspect}; expected true, false, or nil"
121
132
  end
122
- elsif settings[:enable_starttls_auto]
123
- if smtp.respond_to?(:enable_starttls_auto)
133
+ elsif settings.include?(:enable_starttls_auto) && !settings[:enable_starttls_auto].nil?
134
+ case settings[:enable_starttls_auto]
135
+ when true
124
136
  smtp.enable_starttls_auto(ssl_context)
137
+ when false
138
+ smtp.disable_starttls_auto
139
+ else
140
+ raise ArgumentError, "Unrecognized :enable_starttls_auto value #{settings[:enable_starttls_auto].inspect}; expected true, false, or nil"
125
141
  end
126
142
  end
127
143
 
data/lib/mail/version.rb CHANGED
@@ -5,7 +5,7 @@ module Mail
5
5
  MAJOR = 2
6
6
  MINOR = 8
7
7
  PATCH = 0
8
- BUILD = 'rc1'
8
+ BUILD = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
11
11
 
data/lib/mail.rb CHANGED
@@ -60,6 +60,9 @@ module Mail # :doc:
60
60
  require 'mail/matchers/has_sent_mail'
61
61
  require 'mail/matchers/attachment_matchers.rb'
62
62
 
63
+ # Deprecated will be removed in 3.0 release
64
+ require 'mail/check_delivery_params'
65
+
63
66
  # Finally... require all the Mail.methods
64
67
  require 'mail/mail'
65
68
  end
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.8.0.rc1
4
+ version: 2.8.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: 2022-04-22 00:00:00.000000000 Z
11
+ date: 2022-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mini_mime
@@ -162,6 +162,7 @@ files:
162
162
  - lib/mail.rb
163
163
  - lib/mail/attachments_list.rb
164
164
  - lib/mail/body.rb
165
+ - lib/mail/check_delivery_params.rb
165
166
  - lib/mail/configuration.rb
166
167
  - lib/mail/constants.rb
167
168
  - lib/mail/elements.rb
@@ -309,11 +310,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
309
310
  version: '2.5'
310
311
  required_rubygems_version: !ruby/object:Gem::Requirement
311
312
  requirements:
312
- - - ">"
313
+ - - ">="
313
314
  - !ruby/object:Gem::Version
314
- version: 1.3.1
315
+ version: '0'
315
316
  requirements: []
316
- rubygems_version: 3.0.8
317
+ rubygems_version: 3.1.6
317
318
  signing_key:
318
319
  specification_version: 4
319
320
  summary: Mail provides a nice Ruby DSL for making, sending and reading emails.