]> source.dussan.org Git - redmine.git/commitdiff
Fixed: reminder mails are not sent when delivery_method is :async_smtp (#5058).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 6 Apr 2012 18:57:05 +0000 (18:57 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 6 Apr 2012 18:57:05 +0000 (18:57 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9367 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/mailer.rb
lib/tasks/reminder.rake

index 22b99edf69a96ed28f33452702c7f8175664ff15..96bb83c5742bd6423b97ade920af65513bf12b64 100644 (file)
@@ -372,6 +372,17 @@ class Mailer < ActionMailer::Base
     ActionMailer::Base.perform_deliveries = was_enabled
   end
 
+  # Sends emails synchronously in the given block
+  def self.with_synched_deliveries(&block)
+    saved_method = ActionMailer::Base.delivery_method
+    if m = saved_method.to_s.match(%r{^async_(.+)$})
+      ActionMailer::Base.delivery_method = m[1].to_sym
+    end
+    yield
+  ensure
+    ActionMailer::Base.delivery_method = saved_method
+  end
+
   private
   def initialize_defaults(method_name)
     super
index d11c7cebbdc34880e736b3cb2f676b288d89f76a..3997ee3697a838aa933b28227829662f28c5d82c 100644 (file)
@@ -35,7 +35,9 @@ namespace :redmine do
     options[:project] = ENV['project'] if ENV['project']
     options[:tracker] = ENV['tracker'].to_i if ENV['tracker']
     options[:users] = (ENV['users'] || '').split(',').each(&:strip!)
-    
-    Mailer.reminders(options)
+
+    Mailer.with_synched_deliveries do
+      Mailer.reminders(options)
+    end
   end
 end