Author: mtredinnick
Date: 2008-10-23 23:41:58 -0500 (Thu, 23 Oct 2008)
New Revision: 9250
Modified:
django/branches/releases/1.0.X/AUTHORS
django/branches/releases/1.0.X/django/core/mail.py
django/branches/releases/1.0.X/tests/regressiontests/mail/tests.py
Log:
[1.0.X] Fixed #9383 -- Don't open a network connection for sending email if
there's nothing to send. Saves a bit of time when, for example, processing
500-error emails with no ADMINs configured. Based on a patch from Jesse Young.
Backport of r9248 from trunk.
Modified: django/branches/releases/1.0.X/AUTHORS
===================================================================
--- django/branches/releases/1.0.X/AUTHORS 2008-10-24 04:40:51 UTC (rev
9249)
+++ django/branches/releases/1.0.X/AUTHORS 2008-10-24 04:41:58 UTC (rev
9250)
@@ -422,6 +422,7 @@
Jason Yan <[EMAIL PROTECTED]>
[EMAIL PROTECTED]
[EMAIL PROTECTED]
+ Jesse Young <[EMAIL PROTECTED]>
Jarek Zgoda <[EMAIL PROTECTED]>
Cheng Zhang
Modified: django/branches/releases/1.0.X/django/core/mail.py
===================================================================
--- django/branches/releases/1.0.X/django/core/mail.py 2008-10-24 04:40:51 UTC
(rev 9249)
+++ django/branches/releases/1.0.X/django/core/mail.py 2008-10-24 04:41:58 UTC
(rev 9250)
@@ -268,6 +268,10 @@
def send(self, fail_silently=False):
"""Sends the email message."""
+ if not self.recipients():
+ # Don't bother creating the network connection if there's nobody to
+ # send to.
+ return 0
return self.get_connection(fail_silently).send_messages([self])
def attach(self, filename=None, content=None, mimetype=None):
@@ -366,12 +370,16 @@
def mail_admins(subject, message, fail_silently=False):
"""Sends a message to the admins, as defined by the ADMINS setting."""
+ if not settings.ADMINS:
+ return
EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS]
).send(fail_silently=fail_silently)
def mail_managers(subject, message, fail_silently=False):
"""Sends a message to the managers, as defined by the MANAGERS setting."""
+ if not settings.MANAGERS:
+ return
EmailMessage(settings.EMAIL_SUBJECT_PREFIX + subject, message,
settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS]
).send(fail_silently=fail_silently)
Modified: django/branches/releases/1.0.X/tests/regressiontests/mail/tests.py
===================================================================
--- django/branches/releases/1.0.X/tests/regressiontests/mail/tests.py
2008-10-24 04:40:51 UTC (rev 9249)
+++ django/branches/releases/1.0.X/tests/regressiontests/mail/tests.py
2008-10-24 04:41:58 UTC (rev 9250)
@@ -2,7 +2,9 @@
r"""
# Tests for the django.core.mail.
->>> from django.core.mail import EmailMessage
+>>> from django.conf import settings
+>>> from django.core import mail
+>>> from django.core.mail import EmailMessage, mail_admins, mail_managers
>>> from django.utils.translation import ugettext_lazy
# Test normal ascii character case:
@@ -60,4 +62,30 @@
>>> email.message().as_string()
'Content-Type: text/plain; charset="utf-8"\nMIME-Version:
1.0\nContent-Transfer-Encoding: quoted-printable\nSubject: subject\nFrom:
[EMAIL PROTECTED]: [EMAIL PROTECTED]: Fri, 09 Nov 2001 01:08:47
-0000\nMessage-ID: foo\n\ncontent'
+# Test that mail_admins/mail_managers doesn't connect to the mail server if
there are no recipients (#9383)
+
+>>> old_admins = settings.ADMINS
+>>> old_managers = settings.MANAGERS
+>>> settings.ADMINS = []
+>>> settings.MANAGERS = []
+>>> mail.outbox = []
+>>> mail_admins('hi','there')
+>>> len(mail.outbox)
+0
+>>> mail.outbox = []
+>>> mail_managers('hi','there')
+>>> len(mail.outbox)
+0
+>>> settings.ADMINS = settings.MANAGERS = [('nobody','[EMAIL PROTECTED]')]
+>>> mail.outbox = []
+>>> mail_admins('hi','there')
+>>> len(mail.outbox)
+1
+>>> mail.outbox = []
+>>> mail_managers('hi','there')
+>>> len(mail.outbox)
+1
+>>> settings.ADMINS = old_admins
+>>> settings.MANAGERS = old_managers
+
"""
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---