actionmailer 6.1.7.3 → 7.0.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of actionmailer might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -80
- data/MIT-LICENSE +1 -0
- data/lib/action_mailer/base.rb +52 -18
- data/lib/action_mailer/gem_version.rb +5 -5
- data/lib/action_mailer/inline_preview_interceptor.rb +3 -3
- data/lib/action_mailer/message_delivery.rb +10 -40
- data/lib/action_mailer/parameterized.rb +4 -26
- data/lib/action_mailer/preview.rb +1 -1
- data/lib/action_mailer/railtie.rb +11 -0
- data/lib/action_mailer/rescuable.rb +4 -4
- data/lib/action_mailer/test_helper.rb +1 -2
- data/lib/action_mailer/version.rb +1 -1
- data/lib/action_mailer.rb +1 -2
- metadata +57 -17
- data/lib/action_mailer/delivery_job.rb +0 -45
- data/lib/action_mailer/mail_with_error_handling.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 606a202b5233ac024500fda4724b2ee15c44e7916a3c762c223d331c9e913dd1
|
4
|
+
data.tar.gz: 177877e43234919d5d8718a3b110ff12483a977c3864b40f703ddfa53c20be9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c602239cbd2cdb420adccf493e1713be2759f2e492e536ca39ee7b8a86beea995df128b97f56c3107756dac4a1416fea086a2f600dc95722891ad806a7f330b
|
7
|
+
data.tar.gz: 8321114bdae2bb871c2e521fdc08885e235b39baa6f0654be1ba1e9ee5443224694a40817b6f8ce68104b42b3f378320e432f6c711e6d3aadd886910c6624234
|
data/CHANGELOG.md
CHANGED
@@ -1,133 +1,76 @@
|
|
1
|
-
## Rails
|
1
|
+
## Rails 7.0.3 (May 09, 2022) ##
|
2
2
|
|
3
3
|
* No changes.
|
4
4
|
|
5
5
|
|
6
|
-
## Rails
|
6
|
+
## Rails 7.0.2.4 (April 26, 2022) ##
|
7
7
|
|
8
8
|
* No changes.
|
9
9
|
|
10
10
|
|
11
|
-
## Rails
|
11
|
+
## Rails 7.0.2.3 (March 08, 2022) ##
|
12
12
|
|
13
13
|
* No changes.
|
14
14
|
|
15
15
|
|
16
|
-
## Rails
|
16
|
+
## Rails 7.0.2.2 (February 11, 2022) ##
|
17
17
|
|
18
18
|
* No changes.
|
19
19
|
|
20
20
|
|
21
|
-
## Rails
|
21
|
+
## Rails 7.0.2.1 (February 11, 2022) ##
|
22
22
|
|
23
23
|
* No changes.
|
24
24
|
|
25
25
|
|
26
|
-
## Rails
|
26
|
+
## Rails 7.0.2 (February 08, 2022) ##
|
27
27
|
|
28
28
|
* No changes.
|
29
29
|
|
30
30
|
|
31
|
-
## Rails
|
32
|
-
|
33
|
-
* No changes.
|
34
|
-
|
35
|
-
|
36
|
-
## Rails 6.1.5 (March 09, 2022) ##
|
37
|
-
|
38
|
-
* No changes.
|
39
|
-
|
40
|
-
|
41
|
-
## Rails 6.1.4.7 (March 08, 2022) ##
|
42
|
-
|
43
|
-
* No changes.
|
44
|
-
|
45
|
-
|
46
|
-
## Rails 6.1.4.6 (February 11, 2022) ##
|
47
|
-
|
48
|
-
* No changes.
|
49
|
-
|
50
|
-
|
51
|
-
## Rails 6.1.4.5 (February 11, 2022) ##
|
52
|
-
|
53
|
-
* No changes.
|
54
|
-
|
55
|
-
|
56
|
-
## Rails 6.1.4.4 (December 15, 2021) ##
|
57
|
-
|
58
|
-
* No changes.
|
59
|
-
|
60
|
-
|
61
|
-
## Rails 6.1.4.3 (December 14, 2021) ##
|
62
|
-
|
63
|
-
* No changes.
|
64
|
-
|
65
|
-
|
66
|
-
## Rails 6.1.4.2 (December 14, 2021) ##
|
67
|
-
|
68
|
-
* No changes.
|
31
|
+
## Rails 7.0.1 (January 06, 2022) ##
|
69
32
|
|
33
|
+
* Keep configuration of `smtp_settings` consistent between 6.1 and 7.0.
|
70
34
|
|
71
|
-
|
72
|
-
|
73
|
-
* No changes.
|
35
|
+
*André Luis Leal Cardoso Junior*
|
74
36
|
|
75
37
|
|
76
|
-
## Rails
|
38
|
+
## Rails 7.0.0 (December 15, 2021) ##
|
77
39
|
|
78
40
|
* No changes.
|
79
41
|
|
80
42
|
|
81
|
-
## Rails
|
43
|
+
## Rails 7.0.0.rc3 (December 14, 2021) ##
|
82
44
|
|
83
45
|
* No changes.
|
84
46
|
|
85
47
|
|
86
|
-
## Rails
|
48
|
+
## Rails 7.0.0.rc2 (December 14, 2021) ##
|
87
49
|
|
88
50
|
* No changes.
|
89
51
|
|
52
|
+
## Rails 7.0.0.rc1 (December 06, 2021) ##
|
90
53
|
|
91
|
-
|
92
|
-
|
93
|
-
* No changes.
|
54
|
+
* Remove deprecated `ActionMailer::DeliveryJob` and `ActionMailer::Parameterized::DeliveryJob`
|
55
|
+
in favor of `ActionMailer::MailDeliveryJob`.
|
94
56
|
|
57
|
+
*Rafael Mendonça França*
|
95
58
|
|
96
|
-
|
59
|
+
* `email_address_with_name` returns just the address if name is blank.
|
97
60
|
|
98
|
-
*
|
61
|
+
*Thomas Hutterer*
|
99
62
|
|
100
63
|
|
101
|
-
## Rails
|
64
|
+
## Rails 7.0.0.alpha2 (September 15, 2021) ##
|
102
65
|
|
103
66
|
* No changes.
|
104
67
|
|
105
68
|
|
106
|
-
## Rails
|
107
|
-
|
108
|
-
* Sets default mailer queue to `"default"` in the mail assertions.
|
109
|
-
|
110
|
-
*Paul Keen*
|
111
|
-
|
112
|
-
|
113
|
-
## Rails 6.1.0 (December 09, 2020) ##
|
114
|
-
|
115
|
-
* Change default queue name of the deliver (`:mailers`) job to be the job adapter's
|
116
|
-
default (`:default`).
|
117
|
-
|
118
|
-
*Rafael Mendonça França*
|
119
|
-
|
120
|
-
* Remove deprecated `ActionMailer::Base.receive` in favor of [Action Mailbox](https://github.com/rails/rails/tree/master/actionmailbox).
|
121
|
-
|
122
|
-
*Rafael Mendonça França*
|
123
|
-
|
124
|
-
* Fix ActionMailer assertions don't work for parameterized mail with legacy delivery job.
|
125
|
-
|
126
|
-
*bogdanvlviv*
|
69
|
+
## Rails 7.0.0.alpha1 (September 15, 2021) ##
|
127
70
|
|
128
|
-
*
|
71
|
+
* Configures a default of 5 for both `open_timeout` and `read_timeout` for SMTP Settings.
|
129
72
|
|
130
|
-
*
|
73
|
+
*André Luis Leal Cardoso Junior*
|
131
74
|
|
132
75
|
|
133
|
-
Please check [6-
|
76
|
+
Please check [6-1-stable](https://github.com/rails/rails/blob/6-1-stable/actionmailer/CHANGELOG.md) for previous changes.
|
data/MIT-LICENSE
CHANGED
@@ -18,3 +18,4 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
18
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
19
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
20
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/lib/action_mailer/base.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
3
|
+
require "mail"
|
4
4
|
require "action_mailer/collector"
|
5
5
|
require "active_support/core_ext/string/inflections"
|
6
6
|
require "active_support/core_ext/hash/except"
|
@@ -106,7 +106,7 @@ module ActionMailer
|
|
106
106
|
# You got a new note!
|
107
107
|
# <%= truncate(@note.body, length: 25) %>
|
108
108
|
#
|
109
|
-
# If you need to access the subject, from or the recipients in the view, you can do that through message object:
|
109
|
+
# If you need to access the subject, from, or the recipients in the view, you can do that through message object:
|
110
110
|
#
|
111
111
|
# You got a new note from <%= message.from %>!
|
112
112
|
# <%= truncate(@note.body, length: 25) %>
|
@@ -149,9 +149,9 @@ module ActionMailer
|
|
149
149
|
# mail = NotifierMailer.welcome(User.first) # => an ActionMailer::MessageDelivery object
|
150
150
|
# mail.deliver_now # generates and sends the email now
|
151
151
|
#
|
152
|
-
# The
|
152
|
+
# The ActionMailer::MessageDelivery class is a wrapper around a delegate that will call
|
153
153
|
# your method to generate the mail. If you want direct access to the delegator, or <tt>Mail::Message</tt>,
|
154
|
-
# you can call the <tt>message</tt> method on the
|
154
|
+
# you can call the <tt>message</tt> method on the ActionMailer::MessageDelivery object.
|
155
155
|
#
|
156
156
|
# NotifierMailer.welcome(User.first).message # => a Mail::Message object
|
157
157
|
#
|
@@ -334,14 +334,37 @@ module ActionMailer
|
|
334
334
|
# end
|
335
335
|
#
|
336
336
|
# Callbacks in Action Mailer are implemented using
|
337
|
-
#
|
337
|
+
# AbstractController::Callbacks, so you can define and configure
|
338
338
|
# callbacks in the same manner that you would use callbacks in classes that
|
339
|
-
# inherit from
|
339
|
+
# inherit from ActionController::Base.
|
340
340
|
#
|
341
341
|
# Note that unless you have a specific reason to do so, you should prefer
|
342
342
|
# using <tt>before_action</tt> rather than <tt>after_action</tt> in your
|
343
343
|
# Action Mailer classes so that headers are parsed properly.
|
344
344
|
#
|
345
|
+
# = Rescuing Errors
|
346
|
+
#
|
347
|
+
# +rescue+ blocks inside of a mailer method cannot rescue errors that occur
|
348
|
+
# outside of rendering -- for example, record deserialization errors in a
|
349
|
+
# background job, or errors from a third-party mail delivery service.
|
350
|
+
#
|
351
|
+
# To rescue errors that occur during any part of the mailing process, use
|
352
|
+
# {rescue_from}[rdoc-ref:ActiveSupport::Rescuable::ClassMethods#rescue_from]:
|
353
|
+
#
|
354
|
+
# class NotifierMailer < ApplicationMailer
|
355
|
+
# rescue_from ActiveJob::DeserializationError do
|
356
|
+
# # ...
|
357
|
+
# end
|
358
|
+
#
|
359
|
+
# rescue_from "SomeThirdPartyService::ApiError" do
|
360
|
+
# # ...
|
361
|
+
# end
|
362
|
+
#
|
363
|
+
# def notify(recipient)
|
364
|
+
# mail(to: recipient, subject: "Notification")
|
365
|
+
# end
|
366
|
+
# end
|
367
|
+
#
|
345
368
|
# = Previewing emails
|
346
369
|
#
|
347
370
|
# You can preview your email templates visually by adding a mailer preview file to the
|
@@ -402,6 +425,7 @@ module ActionMailer
|
|
402
425
|
# This is a symbol and one of <tt>:plain</tt> (will send the password Base64 encoded), <tt>:login</tt> (will
|
403
426
|
# send the password Base64 encoded) or <tt>:cram_md5</tt> (combines a Challenge/Response mechanism to exchange
|
404
427
|
# information and a cryptographic Message Digest 5 algorithm to hash important information)
|
428
|
+
# * <tt>:enable_starttls</tt> - Use STARTTLS when connecting to your SMTP server and fail if unsupported. Defaults to <tt>false</tt>.
|
405
429
|
# * <tt>:enable_starttls_auto</tt> - Detects if STARTTLS is enabled in your SMTP server and starts
|
406
430
|
# to use it. Defaults to <tt>true</tt>.
|
407
431
|
# * <tt>:openssl_verify_mode</tt> - When using TLS, you can set how OpenSSL checks the certificate. This is
|
@@ -409,6 +433,8 @@ module ActionMailer
|
|
409
433
|
# of an OpenSSL verify constant (<tt>'none'</tt> or <tt>'peer'</tt>) or directly the constant
|
410
434
|
# (<tt>OpenSSL::SSL::VERIFY_NONE</tt> or <tt>OpenSSL::SSL::VERIFY_PEER</tt>).
|
411
435
|
# * <tt>:ssl/:tls</tt> Enables the SMTP connection to use SMTP/TLS (SMTPS: SMTP over direct TLS connection)
|
436
|
+
# * <tt>:open_timeout</tt> Number of seconds to wait while attempting to open a connection.
|
437
|
+
# * <tt>:read_timeout</tt> Number of seconds to wait until timing-out a read(2) call.
|
412
438
|
#
|
413
439
|
# * <tt>sendmail_settings</tt> - Allows you to override options for the <tt>:sendmail</tt> delivery method.
|
414
440
|
# * <tt>:location</tt> - The location of the sendmail executable. Defaults to <tt>/usr/sbin/sendmail</tt>.
|
@@ -433,7 +459,10 @@ module ActionMailer
|
|
433
459
|
# * <tt>deliveries</tt> - Keeps an array of all the emails sent out through the Action Mailer with
|
434
460
|
# <tt>delivery_method :test</tt>. Most useful for unit and functional testing.
|
435
461
|
#
|
436
|
-
# * <tt>
|
462
|
+
# * <tt>delivery_job</tt> - The job class used with <tt>deliver_later</tt>. Defaults to
|
463
|
+
# +ActionMailer::MailDeliveryJob+.
|
464
|
+
#
|
465
|
+
# * <tt>deliver_later_queue_name</tt> - The name of the queue used with <tt>deliver_later</tt>.
|
437
466
|
class Base < AbstractController::Base
|
438
467
|
include DeliveryMethods
|
439
468
|
include Rescuable
|
@@ -457,7 +486,7 @@ module ActionMailer
|
|
457
486
|
|
458
487
|
helper ActionMailer::MailHelper
|
459
488
|
|
460
|
-
class_attribute :delivery_job, default: ::ActionMailer::
|
489
|
+
class_attribute :delivery_job, default: ::ActionMailer::MailDeliveryJob
|
461
490
|
class_attribute :default_params, default: {
|
462
491
|
mime_version: "1.0",
|
463
492
|
charset: "UTF-8",
|
@@ -487,28 +516,28 @@ module ActionMailer
|
|
487
516
|
end
|
488
517
|
|
489
518
|
# Register an Observer which will be notified when mail is delivered.
|
490
|
-
# Either a class, string or symbol can be passed in as the Observer.
|
519
|
+
# Either a class, string, or symbol can be passed in as the Observer.
|
491
520
|
# If a string or symbol is passed in it will be camelized and constantized.
|
492
521
|
def register_observer(observer)
|
493
522
|
Mail.register_observer(observer_class_for(observer))
|
494
523
|
end
|
495
524
|
|
496
525
|
# Unregister a previously registered Observer.
|
497
|
-
# Either a class, string or symbol can be passed in as the Observer.
|
526
|
+
# Either a class, string, or symbol can be passed in as the Observer.
|
498
527
|
# If a string or symbol is passed in it will be camelized and constantized.
|
499
528
|
def unregister_observer(observer)
|
500
529
|
Mail.unregister_observer(observer_class_for(observer))
|
501
530
|
end
|
502
531
|
|
503
532
|
# Register an Interceptor which will be called before mail is sent.
|
504
|
-
# Either a class, string or symbol can be passed in as the Interceptor.
|
533
|
+
# Either a class, string, or symbol can be passed in as the Interceptor.
|
505
534
|
# If a string or symbol is passed in it will be camelized and constantized.
|
506
535
|
def register_interceptor(interceptor)
|
507
536
|
Mail.register_interceptor(observer_class_for(interceptor))
|
508
537
|
end
|
509
538
|
|
510
539
|
# Unregister a previously registered Interceptor.
|
511
|
-
# Either a class, string or symbol can be passed in as the Interceptor.
|
540
|
+
# Either a class, string, or symbol can be passed in as the Interceptor.
|
512
541
|
# If a string or symbol is passed in it will be camelized and constantized.
|
513
542
|
def unregister_interceptor(interceptor)
|
514
543
|
Mail.unregister_interceptor(observer_class_for(interceptor))
|
@@ -553,7 +582,7 @@ module ActionMailer
|
|
553
582
|
# through a callback when you call <tt>:deliver</tt> on the <tt>Mail::Message</tt>,
|
554
583
|
# calling +deliver_mail+ directly and passing a <tt>Mail::Message</tt> will do
|
555
584
|
# nothing except tell the logger you sent the email.
|
556
|
-
def deliver_mail(mail)
|
585
|
+
def deliver_mail(mail) # :nodoc:
|
557
586
|
ActiveSupport::Notifications.instrument("deliver.action_mailer") do |payload|
|
558
587
|
set_payload_for_mail(payload, mail)
|
559
588
|
yield # Let Mail do the delivery actions
|
@@ -561,10 +590,12 @@ module ActionMailer
|
|
561
590
|
end
|
562
591
|
|
563
592
|
# Returns an email in the format "Name <email@example.com>".
|
593
|
+
#
|
594
|
+
# If the name is a blank string, it returns just the address.
|
564
595
|
def email_address_with_name(address, name)
|
565
596
|
Mail::Address.new.tap do |builder|
|
566
597
|
builder.address = address
|
567
|
-
builder.display_name = name
|
598
|
+
builder.display_name = name.presence
|
568
599
|
end.to_s
|
569
600
|
end
|
570
601
|
|
@@ -589,7 +620,7 @@ module ActionMailer
|
|
589
620
|
super
|
590
621
|
end
|
591
622
|
end
|
592
|
-
ruby2_keywords(:method_missing)
|
623
|
+
ruby2_keywords(:method_missing)
|
593
624
|
|
594
625
|
def respond_to_missing?(method, include_all = false)
|
595
626
|
action_methods.include?(method.to_s) || super
|
@@ -604,7 +635,7 @@ module ActionMailer
|
|
604
635
|
@_message = Mail.new
|
605
636
|
end
|
606
637
|
|
607
|
-
def process(method_name, *args)
|
638
|
+
def process(method_name, *args) # :nodoc:
|
608
639
|
payload = {
|
609
640
|
mailer: self.class.name,
|
610
641
|
action: method_name,
|
@@ -616,8 +647,9 @@ module ActionMailer
|
|
616
647
|
@_message = NullMail.new unless @_mail_was_called
|
617
648
|
end
|
618
649
|
end
|
650
|
+
ruby2_keywords(:process)
|
619
651
|
|
620
|
-
class NullMail
|
652
|
+
class NullMail # :nodoc:
|
621
653
|
def body; "" end
|
622
654
|
def header; {} end
|
623
655
|
|
@@ -636,6 +668,8 @@ module ActionMailer
|
|
636
668
|
end
|
637
669
|
|
638
670
|
# Returns an email in the format "Name <email@example.com>".
|
671
|
+
#
|
672
|
+
# If the name is a blank string, it returns just the address.
|
639
673
|
def email_address_with_name(address, name)
|
640
674
|
self.class.email_address_with_name(address, name)
|
641
675
|
end
|
@@ -899,7 +933,7 @@ module ActionMailer
|
|
899
933
|
end
|
900
934
|
|
901
935
|
def apply_defaults(headers)
|
902
|
-
default_values = self.class.default.transform_values do |value|
|
936
|
+
default_values = self.class.default.except(*headers.keys).transform_values do |value|
|
903
937
|
compute_default(value)
|
904
938
|
end
|
905
939
|
|
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActionMailer
|
4
|
-
# Returns the version of
|
4
|
+
# Returns the currently loaded version of Action Mailer as a <tt>Gem::Version</tt>.
|
5
5
|
def self.gem_version
|
6
6
|
Gem::Version.new VERSION::STRING
|
7
7
|
end
|
8
8
|
|
9
9
|
module VERSION
|
10
|
-
MAJOR =
|
11
|
-
MINOR =
|
12
|
-
TINY =
|
13
|
-
PRE =
|
10
|
+
MAJOR = 7
|
11
|
+
MINOR = 0
|
12
|
+
TINY = 3
|
13
|
+
PRE = nil
|
14
14
|
|
15
15
|
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
|
16
16
|
end
|
@@ -17,15 +17,15 @@ module ActionMailer
|
|
17
17
|
|
18
18
|
include Base64
|
19
19
|
|
20
|
-
def self.previewing_email(message)
|
20
|
+
def self.previewing_email(message) # :nodoc:
|
21
21
|
new(message).transform!
|
22
22
|
end
|
23
23
|
|
24
|
-
def initialize(message)
|
24
|
+
def initialize(message) # :nodoc:
|
25
25
|
@message = message
|
26
26
|
end
|
27
27
|
|
28
|
-
def transform!
|
28
|
+
def transform! # :nodoc:
|
29
29
|
return message if html_part.blank?
|
30
30
|
|
31
31
|
html_part.body = html_part.decoded.gsub(PATTERN) do |match|
|
@@ -15,7 +15,7 @@ module ActionMailer
|
|
15
15
|
# Notifier.welcome(User.first).deliver_later # enqueue email delivery as a job through Active Job
|
16
16
|
# Notifier.welcome(User.first).message # a Mail::Message object
|
17
17
|
class MessageDelivery < Delegator
|
18
|
-
def initialize(mailer_class, action, *args)
|
18
|
+
def initialize(mailer_class, action, *args) # :nodoc:
|
19
19
|
@mailer_class, @action, @args = mailer_class, action, args
|
20
20
|
|
21
21
|
# The mail is only processed if we try to call any methods on it.
|
@@ -23,15 +23,15 @@ module ActionMailer
|
|
23
23
|
@processed_mailer = nil
|
24
24
|
@mail_message = nil
|
25
25
|
end
|
26
|
-
ruby2_keywords(:initialize)
|
26
|
+
ruby2_keywords(:initialize)
|
27
27
|
|
28
28
|
# Method calls are delegated to the Mail::Message that's ready to deliver.
|
29
|
-
def __getobj__
|
29
|
+
def __getobj__ # :nodoc:
|
30
30
|
@mail_message ||= processed_mailer.message
|
31
31
|
end
|
32
32
|
|
33
33
|
# Unused except for delegator internals (dup, marshalling).
|
34
|
-
def __setobj__(mail_message)
|
34
|
+
def __setobj__(mail_message) # :nodoc:
|
35
35
|
@mail_message = mail_message
|
36
36
|
end
|
37
37
|
|
@@ -62,8 +62,8 @@ module ActionMailer
|
|
62
62
|
# * <tt>:queue</tt> - Enqueue the email on the specified queue
|
63
63
|
# * <tt>:priority</tt> - Enqueues the email with the specified priority
|
64
64
|
#
|
65
|
-
# By default, the email will be enqueued using <tt>ActionMailer::
|
66
|
-
#
|
65
|
+
# By default, the email will be enqueued using <tt>ActionMailer::MailDeliveryJob</tt>. Each
|
66
|
+
# ActionMailer::Base class can specify the job to use by setting the class variable
|
67
67
|
# +delivery_job+.
|
68
68
|
#
|
69
69
|
# class AccountRegistrationMailer < ApplicationMailer
|
@@ -88,8 +88,8 @@ module ActionMailer
|
|
88
88
|
# * <tt>:queue</tt> - Enqueue the email on the specified queue.
|
89
89
|
# * <tt>:priority</tt> - Enqueues the email with the specified priority
|
90
90
|
#
|
91
|
-
# By default, the email will be enqueued using <tt>ActionMailer::
|
92
|
-
#
|
91
|
+
# By default, the email will be enqueued using <tt>ActionMailer::MailDeliveryJob</tt>. Each
|
92
|
+
# ActionMailer::Base class can specify the job to use by setting the class variable
|
93
93
|
# +delivery_job+.
|
94
94
|
#
|
95
95
|
# class AccountRegistrationMailer < ApplicationMailer
|
@@ -140,38 +140,8 @@ module ActionMailer
|
|
140
140
|
"#deliver_later, 2. only touch the message *within your mailer " \
|
141
141
|
"method*, or 3. use a custom Active Job instead of #deliver_later."
|
142
142
|
else
|
143
|
-
|
144
|
-
|
145
|
-
if use_new_args?(job)
|
146
|
-
job.set(options).perform_later(
|
147
|
-
@mailer_class.name, @action.to_s, delivery_method.to_s, args: @args)
|
148
|
-
elsif job <= DeliveryJob
|
149
|
-
job.set(options).perform_later(
|
150
|
-
@mailer_class.name, @action.to_s, delivery_method.to_s, *@args)
|
151
|
-
else
|
152
|
-
ActiveSupport::Deprecation.warn(<<~EOM)
|
153
|
-
In Rails 7.0, Action Mailer will pass the mail arguments inside the `:args` keyword argument.
|
154
|
-
The `perform` method of the #{job} needs to change and forward the mail arguments
|
155
|
-
from the `args` keyword argument.
|
156
|
-
|
157
|
-
The `perform` method should now look like:
|
158
|
-
|
159
|
-
`def perform(mailer, mail_method, delivery, args:)`
|
160
|
-
EOM
|
161
|
-
|
162
|
-
job.set(options).perform_later(
|
163
|
-
@mailer_class.name, @action.to_s, delivery_method.to_s, *@args)
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
167
|
-
|
168
|
-
def use_new_args?(job)
|
169
|
-
parameters = job.public_instance_method(:perform).parameters
|
170
|
-
|
171
|
-
parameters.find do |key, name|
|
172
|
-
return true if key == :keyreq && name == :args
|
173
|
-
|
174
|
-
key == :keyrest and name != :**
|
143
|
+
@mailer_class.delivery_job.set(options).perform_later(
|
144
|
+
@mailer_class.name, @action.to_s, delivery_method.to_s, args: @args)
|
175
145
|
end
|
176
146
|
end
|
177
147
|
end
|
@@ -115,26 +115,19 @@ module ActionMailer
|
|
115
115
|
super
|
116
116
|
end
|
117
117
|
end
|
118
|
-
ruby2_keywords(:method_missing)
|
118
|
+
ruby2_keywords(:method_missing)
|
119
119
|
|
120
120
|
def respond_to_missing?(method, include_all = false)
|
121
121
|
@mailer.respond_to?(method, include_all)
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
125
|
-
class DeliveryJob < ActionMailer::DeliveryJob # :nodoc:
|
126
|
-
def perform(mailer, mail_method, delivery_method, params, *args)
|
127
|
-
mailer.constantize.with(params).public_send(mail_method, *args).send(delivery_method)
|
128
|
-
end
|
129
|
-
ruby2_keywords(:perform) if respond_to?(:ruby2_keywords, true)
|
130
|
-
end
|
131
|
-
|
132
125
|
class MessageDelivery < ActionMailer::MessageDelivery # :nodoc:
|
133
126
|
def initialize(mailer_class, action, params, *args)
|
134
127
|
super(mailer_class, action, *args)
|
135
128
|
@params = params
|
136
129
|
end
|
137
|
-
ruby2_keywords(:initialize)
|
130
|
+
ruby2_keywords(:initialize)
|
138
131
|
|
139
132
|
private
|
140
133
|
def processed_mailer
|
@@ -148,23 +141,8 @@ module ActionMailer
|
|
148
141
|
if processed?
|
149
142
|
super
|
150
143
|
else
|
151
|
-
|
152
|
-
|
153
|
-
if job <= MailDeliveryJob
|
154
|
-
job.set(options).perform_later(
|
155
|
-
@mailer_class.name, @action.to_s, delivery_method.to_s, params: @params, args: @args)
|
156
|
-
else
|
157
|
-
job.set(options).perform_later(
|
158
|
-
@mailer_class.name, @action.to_s, delivery_method.to_s, @params, *@args)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
def delivery_job_class
|
164
|
-
if @mailer_class.delivery_job <= MailDeliveryJob
|
165
|
-
@mailer_class.delivery_job
|
166
|
-
else
|
167
|
-
Parameterized::DeliveryJob
|
144
|
+
@mailer_class.delivery_job.set(options).perform_later(
|
145
|
+
@mailer_class.name, @action.to_s, delivery_method.to_s, params: @params, args: @args)
|
168
146
|
end
|
169
147
|
end
|
170
148
|
end
|
@@ -45,6 +45,17 @@ module ActionMailer
|
|
45
45
|
self.delivery_job = delivery_job.constantize
|
46
46
|
end
|
47
47
|
|
48
|
+
if options.smtp_settings
|
49
|
+
self.smtp_settings = options.smtp_settings
|
50
|
+
end
|
51
|
+
|
52
|
+
smtp_timeout = options.delete(:smtp_timeout)
|
53
|
+
|
54
|
+
if self.smtp_settings && smtp_timeout
|
55
|
+
self.smtp_settings[:open_timeout] ||= smtp_timeout
|
56
|
+
self.smtp_settings[:read_timeout] ||= smtp_timeout
|
57
|
+
end
|
58
|
+
|
48
59
|
options.each { |k, v| send("#{k}=", v) }
|
49
60
|
end
|
50
61
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module ActionMailer
|
3
|
+
module ActionMailer # :nodoc:
|
4
4
|
# Provides +rescue_from+ for mailers. Wraps mailer action processing,
|
5
5
|
# mail job processing, and mail delivery.
|
6
6
|
module Rescuable
|
@@ -8,19 +8,19 @@ module ActionMailer #:nodoc:
|
|
8
8
|
include ActiveSupport::Rescuable
|
9
9
|
|
10
10
|
class_methods do
|
11
|
-
def handle_exception(exception)
|
11
|
+
def handle_exception(exception) # :nodoc:
|
12
12
|
rescue_with_handler(exception) || raise(exception)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
def handle_exceptions
|
16
|
+
def handle_exceptions # :nodoc:
|
17
17
|
yield
|
18
18
|
rescue => exception
|
19
19
|
rescue_with_handler(exception) || raise
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
|
-
def process(
|
23
|
+
def process(...)
|
24
24
|
handle_exceptions do
|
25
25
|
super
|
26
26
|
end
|
@@ -155,8 +155,7 @@ module ActionMailer
|
|
155
155
|
def delivery_job_filter(job)
|
156
156
|
job_class = job.is_a?(Hash) ? job.fetch(:job) : job.class
|
157
157
|
|
158
|
-
Base.descendants.map(&:delivery_job).include?(job_class)
|
159
|
-
ActionMailer::Parameterized::DeliveryJob == job_class
|
158
|
+
Base.descendants.map(&:delivery_job).include?(job_class)
|
160
159
|
end
|
161
160
|
end
|
162
161
|
end
|
data/lib/action_mailer.rb
CHANGED
@@ -51,13 +51,12 @@ module ActionMailer
|
|
51
51
|
autoload :TestCase
|
52
52
|
autoload :TestHelper
|
53
53
|
autoload :MessageDelivery
|
54
|
-
autoload :DeliveryJob
|
55
54
|
autoload :MailDeliveryJob
|
56
55
|
|
57
56
|
def self.eager_load!
|
58
57
|
super
|
59
58
|
|
60
|
-
require "
|
59
|
+
require "mail"
|
61
60
|
Mail.eager_autoload!
|
62
61
|
end
|
63
62
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionmailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 7.0.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 7.0.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 7.0.3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 7.0.3
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: actionview
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 7.0.3
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 7.0.3
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activejob
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 7.0.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 7.0.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mail
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,6 +86,48 @@ dependencies:
|
|
86
86
|
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: 2.5.4
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: net-imap
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :runtime
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: net-pop
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: net-smtp
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
89
131
|
- !ruby/object:Gem::Dependency
|
90
132
|
name: rails-dom-testing
|
91
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -113,14 +155,12 @@ files:
|
|
113
155
|
- lib/action_mailer.rb
|
114
156
|
- lib/action_mailer/base.rb
|
115
157
|
- lib/action_mailer/collector.rb
|
116
|
-
- lib/action_mailer/delivery_job.rb
|
117
158
|
- lib/action_mailer/delivery_methods.rb
|
118
159
|
- lib/action_mailer/gem_version.rb
|
119
160
|
- lib/action_mailer/inline_preview_interceptor.rb
|
120
161
|
- lib/action_mailer/log_subscriber.rb
|
121
162
|
- lib/action_mailer/mail_delivery_job.rb
|
122
163
|
- lib/action_mailer/mail_helper.rb
|
123
|
-
- lib/action_mailer/mail_with_error_handling.rb
|
124
164
|
- lib/action_mailer/message_delivery.rb
|
125
165
|
- lib/action_mailer/parameterized.rb
|
126
166
|
- lib/action_mailer/preview.rb
|
@@ -138,10 +178,10 @@ licenses:
|
|
138
178
|
- MIT
|
139
179
|
metadata:
|
140
180
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
141
|
-
changelog_uri: https://github.com/rails/rails/blob/
|
142
|
-
documentation_uri: https://api.rubyonrails.org/
|
181
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.0.3/actionmailer/CHANGELOG.md
|
182
|
+
documentation_uri: https://api.rubyonrails.org/v7.0.3/
|
143
183
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
144
|
-
source_code_uri: https://github.com/rails/rails/tree/
|
184
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.0.3/actionmailer
|
145
185
|
rubygems_mfa_required: 'true'
|
146
186
|
post_install_message:
|
147
187
|
rdoc_options: []
|
@@ -151,7 +191,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
191
|
requirements:
|
152
192
|
- - ">="
|
153
193
|
- !ruby/object:Gem::Version
|
154
|
-
version: 2.
|
194
|
+
version: 2.7.0
|
155
195
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
196
|
requirements:
|
157
197
|
- - ">="
|
@@ -159,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
199
|
version: '0'
|
160
200
|
requirements:
|
161
201
|
- none
|
162
|
-
rubygems_version: 3.
|
202
|
+
rubygems_version: 3.3.7
|
163
203
|
signing_key:
|
164
204
|
specification_version: 4
|
165
205
|
summary: Email composition and delivery framework (part of Rails).
|
@@ -1,45 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "active_job"
|
4
|
-
|
5
|
-
module ActionMailer
|
6
|
-
# The <tt>ActionMailer::DeliveryJob</tt> class is used when you
|
7
|
-
# want to send emails outside of the request-response cycle.
|
8
|
-
#
|
9
|
-
# Exceptions are rescued and handled by the mailer class.
|
10
|
-
class DeliveryJob < ActiveJob::Base # :nodoc:
|
11
|
-
queue_as { ActionMailer::Base.deliver_later_queue_name }
|
12
|
-
|
13
|
-
rescue_from StandardError, with: :handle_exception_with_mailer_class
|
14
|
-
|
15
|
-
before_perform do
|
16
|
-
ActiveSupport::Deprecation.warn <<~MSG.squish
|
17
|
-
Sending mail with DeliveryJob and Parameterized::DeliveryJob
|
18
|
-
is deprecated and will be removed in Rails 7.0.
|
19
|
-
Please use MailDeliveryJob instead.
|
20
|
-
MSG
|
21
|
-
end
|
22
|
-
|
23
|
-
def perform(mailer, mail_method, delivery_method, *args) #:nodoc:
|
24
|
-
mailer.constantize.public_send(mail_method, *args).send(delivery_method)
|
25
|
-
end
|
26
|
-
ruby2_keywords(:perform) if respond_to?(:ruby2_keywords, true)
|
27
|
-
|
28
|
-
private
|
29
|
-
# "Deserialize" the mailer class name by hand in case another argument
|
30
|
-
# (like a Global ID reference) raised DeserializationError.
|
31
|
-
def mailer_class
|
32
|
-
if mailer = Array(@serialized_arguments).first || Array(arguments).first
|
33
|
-
mailer.constantize
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def handle_exception_with_mailer_class(exception)
|
38
|
-
if klass = mailer_class
|
39
|
-
klass.handle_exception exception
|
40
|
-
else
|
41
|
-
raise exception
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
begin
|
4
|
-
require "mail"
|
5
|
-
rescue LoadError => error
|
6
|
-
if error.message.match?(/net\/smtp/)
|
7
|
-
$stderr.puts "You don't have net-smtp installed in your application. Please add it to your Gemfile and run bundle install"
|
8
|
-
raise
|
9
|
-
end
|
10
|
-
end
|