|
|
@@ -107,48 +107,11 @@ class Mailer < ActionMailer::Base |
|
|
|
"method*, or 3. use a custom Active Job instead of #deliver_later." |
|
|
|
else |
|
|
|
args = 'Mailer', @action.to_s, delivery_method.to_s, *@args |
|
|
|
DeliveryJob.set(options).perform_later(*args) |
|
|
|
::ActionMailer::DeliveryJob.set(options).perform_later(*args) |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
class DeliveryJob < ActionMailer::DeliveryJob |
|
|
|
module Arguments |
|
|
|
extend ActiveJob::Arguments |
|
|
|
extend self |
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
def serialize_argument(argument) |
|
|
|
# Ensure that ActiveRecord::Base objects are fully serialized for mail |
|
|
|
# sending. This circumvents the globalid gem for this job. |
|
|
|
if argument.is_a?(ActiveRecord::Base) |
|
|
|
argument.to_yaml |
|
|
|
else |
|
|
|
super |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def deserialize_argument(argument) |
|
|
|
if argument.is_a?(ActiveRecord::Base) |
|
|
|
argument |
|
|
|
else |
|
|
|
super |
|
|
|
end |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
private |
|
|
|
|
|
|
|
def serialize_arguments(serialized_args) |
|
|
|
Arguments.serialize(serialized_args) |
|
|
|
end |
|
|
|
|
|
|
|
def deserialize_arguments(serialized_args) |
|
|
|
Arguments.deserialize(serialized_args) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
def process(action, *args) |
|
|
|
user = args.shift |
|
|
|
raise ArgumentError, "First argument has to be a user, was #{user.inspect}" unless user.is_a?(User) |
|
|
@@ -701,9 +664,9 @@ class Mailer < ActionMailer::Base |
|
|
|
# |
|
|
|
# Example: |
|
|
|
# test_email => Mail::Message object |
|
|
|
def test_email |
|
|
|
def test_email(user) |
|
|
|
@url = url_for(:controller => 'welcome') |
|
|
|
mail :to => User.current.mail, |
|
|
|
mail :to => user.mail, |
|
|
|
:subject => 'Redmine test' |
|
|
|
end |
|
|
|
|
|
|
@@ -712,7 +675,7 @@ class Mailer < ActionMailer::Base |
|
|
|
# Example: |
|
|
|
# Mailer.test_email(user).deliver => send an email to the given user |
|
|
|
def self.test_email(user) |
|
|
|
MultiMessage.new(:test_email).for(user) |
|
|
|
MultiMessage.new(:test_email, user).for(user) |
|
|
|
end |
|
|
|
|
|
|
|
# Sends reminders to issue assignees |