Ticket #2897: django-mail-tls-patch.3.txt

File django-mail-tls-patch.3.txt, 3.2 KB (added by mail@…, 8 years ago)

modified and updated patch against rev 4815, works here with a hosted Google account

Line 
1Index: django/conf/global_settings.py
2===================================================================
3--- django/conf/global_settings.py      (revision 4815)
4+++ django/conf/global_settings.py      (working copy)
5@@ -118,6 +118,7 @@
6 # Optional SMTP authentication information for EMAIL_HOST.
7 EMAIL_HOST_USER = ''
8 EMAIL_HOST_PASSWORD = ''
9+EMAIL_TLS = False   # encrypt the connection using TLS/SSL?
10 
11 # List of strings representing installed apps.
12 INSTALLED_APPS = ()
13Index: django/core/mail.py
14===================================================================
15--- django/core/mail.py (revision 4815)
16+++ django/core/mail.py (working copy)
17@@ -34,21 +34,24 @@
18             val = Header(val, settings.DEFAULT_CHARSET)
19         MIMEText.__setitem__(self, name, val)
20 
21-def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None):
22+def send_mail(subject, message, from_email, recipient_list, fail_silently=False, auth_user=None, auth_password=None,tls=None):
23     """
24     Easy wrapper for sending a single message to a recipient list. All members
25     of the recipient list will see the other recipients in the 'To' field.
26 
27     If auth_user is None, the EMAIL_HOST_USER setting is used.
28     If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
29+    If tls is None, the EMAIL_TLS setting is used.
30     """
31     if auth_user is None:
32         auth_user = settings.EMAIL_HOST_USER
33     if auth_password is None:
34         auth_password = settings.EMAIL_HOST_PASSWORD
35-    return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently, auth_user, auth_password)
36+    if tls is None:
37+        tls=getattr(settings, 'EMAIL_TLS', False)
38+    return send_mass_mail([[subject, message, from_email, recipient_list]], fail_silently, auth_user, auth_password,tls)
39 
40-def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None):
41+def send_mass_mail(datatuple, fail_silently=False, auth_user=None, auth_password=None,tls= None):
42     """
43     Given a datatuple of (subject, message, from_email, recipient_list), sends
44     each message to each recipient list. Returns the number of e-mails sent.
45@@ -57,13 +60,20 @@
46     If auth_user and auth_password are set, they're used to log in.
47     If auth_user is None, the EMAIL_HOST_USER setting is used.
48     If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
49+    If tls is None, the EMAIL_TLS setting is used.
50     """
51     if auth_user is None:
52         auth_user = settings.EMAIL_HOST_USER
53     if auth_password is None:
54         auth_password = settings.EMAIL_HOST_PASSWORD
55+    if tls is None:
56+        tls=getattr(settings, 'EMAIL_TLS', False)
57     try:
58         server = smtplib.SMTP(settings.EMAIL_HOST, settings.EMAIL_PORT)
59+        if tls:
60+            server.ehlo(settings.EMAIL_HOST)
61+            server.starttls()
62+            server.ehlo(settings.EMAIL_HOST)
63         if auth_user and auth_password:
64             server.login(auth_user, auth_password)
65     except:
66@@ -92,7 +102,7 @@
67             if not fail_silently:
68                 raise
69     try:
70-        server.quit()
71+        server.close() # with .quit(), at least smtp.gmail.com complains
72     except:
73         if fail_silently:
74             return
Back to Top