Ralfp 12 лет назад
Родитель
Сommit
afa5c38e1d
3 измененных файлов с 17 добавлено и 2 удалено
  1. 14 0
      misago/middleware/mailsqueue.py
  2. 2 2
      misago/models/usermodel.py
  3. 1 0
      misago/settings_base.py

+ 14 - 0
misago/middleware/mailsqueue.py

@@ -0,0 +1,14 @@
+from django.conf import settings
+from django.core import mail
+
+class MailsQueueMiddleware(object):
+    def process_request(self, request):
+        request.mails_queue = []
+
+    def process_response(self, request, response):
+        if request.mails_queue:
+            connection = mail.get_connection(fail_silently=settings.DEBUG)
+            connection.open()
+            connection.send_messages(request.mails_queue)
+            connection.close()
+        return response

+ 2 - 2
misago/models/usermodel.py

@@ -487,10 +487,10 @@ class User(models.Model):
         else:
             recipient = self.email
 
-        # Build and send message
+        # Build message and add it to queue
         email = EmailMultiAlternatives(subject, templates[0].render(context), settings.EMAIL_HOST_USER, [recipient])
         email.attach_alternative(templates[1].render(context), "text/html")
-        email.send()
+        request.mails_queue.append(email)
 
     def get_activation(self):
         activations = ['none', 'user', 'admin', 'credentials']

+ 1 - 0
misago/settings_base.py

@@ -105,6 +105,7 @@ MIDDLEWARE_CLASSES = (
     'misago.middleware.banning.BanningMiddleware',
     'misago.middleware.messages.MessagesMiddleware',
     'misago.middleware.user.UserMiddleware',
+    'misago.middleware.mailsqueue.MailsQueueMiddleware',
     'misago.middleware.acl.ACLMiddleware',
     'misago.middleware.privatethreads.PrivateThreadsMiddleware',
     'django.middleware.common.CommonMiddleware',