From 2906f1d74204771dbba3f91187b8042987bb5923 Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Thu, 28 Mar 2019 15:02:38 -0500
Subject: [PATCH] Change mechanism for sending emails

Instead of looping over EmailMessage.send() calls, we now get the
email backend and send a list of messages. Note that the backend
sends the messages individually still but this cuts out some of the
overhead.
---
 config/settings/base.py |  2 +-
 gracedb/alerts/email.py | 13 ++++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/config/settings/base.py b/config/settings/base.py
index 8bef77c62..ec4caa651 100644
--- a/config/settings/base.py
+++ b/config/settings/base.py
@@ -603,7 +603,7 @@ LOGGING = {
             'propagate': True,
             'level': LOG_LEVEL,
         },
-       'django.request': {
+        'django.request': {
             'handlers': ['mail_admins'],
             'level': 'ERROR',
             'propagate': False,
diff --git a/gracedb/alerts/email.py b/gracedb/alerts/email.py
index 3abeefe51..0ffa1f3b7 100644
--- a/gracedb/alerts/email.py
+++ b/gracedb/alerts/email.py
@@ -3,7 +3,7 @@ import logging
 import textwrap
 
 from django.conf import settings
-from django.core.mail import EmailMessage
+from django.core.mail import EmailMessage, get_connection
 from django.urls import reverse
 
 from core.time_utils import gpsToUtc
@@ -143,10 +143,13 @@ def issue_email_alerts(event_or_superevent, alert_type, recipients,
     logger.debug("Sending email to {recips}".format(
         recips=", ".join([r.email for r in recipients])))
 
-    # Send mail individually so all emails are not rejected due to a single
-    # address being blacklisted
+    # Construct email messages
+    messages = []
     for recip in recipients:
-        # Send email
         email = EmailMessage(subject=subject, body=email_body,
             from_email=settings.ALERT_EMAIL_FROM, to=[recip.email])
-        email.send()
+        messages.append(email)
+
+    # Send email messages
+    backend = get_connection()
+    backend.send_messages(messages)
-- 
GitLab