瀏覽代碼

Adds EMAIL_USE_TLS option. Closes #418

Stefan Kjartansson 13 年之前
父節點
當前提交
51e4e677b2
共有 5 個文件被更改,包括 21 次插入4 次删除
  1. 2 1
      celery/app/base.py
  2. 1 0
      celery/app/defaults.py
  3. 4 2
      celery/loaders/base.py
  4. 7 1
      celery/utils/mail.py
  5. 7 0
      docs/configuration.rst

+ 2 - 1
celery/app/base.py

@@ -329,7 +329,8 @@ class BaseApp(object):
                                        user=self.conf.EMAIL_HOST_USER,
                                        password=self.conf.EMAIL_HOST_PASSWORD,
                                        timeout=self.conf.EMAIL_TIMEOUT,
-                                       use_ssl=self.conf.EMAIL_USE_SSL)
+                                       use_ssl=self.conf.EMAIL_USE_SSL,
+                                       use_tls=self.conf.EMAIL_USE_TLS)
 
     def either(self, default_key, *values):
         """Fallback to the value of a configuration key if none of the

+ 1 - 0
celery/app/defaults.py

@@ -157,6 +157,7 @@ NAMESPACES = {
         "HOST_PASSWORD": Option(None),
         "TIMEOUT": Option(2, type="int"),
         "USE_SSL": Option(False, type="bool"),
+        "USE_TLS": Option(False, type="bool"),
     },
     "SERVER_EMAIL": Option("celery@localhost"),
     "ADMINS": Option((), type="tuple"),

+ 4 - 2
celery/loaders/base.py

@@ -156,13 +156,15 @@ class BaseLoader(object):
 
     def mail_admins(self, subject, body, fail_silently=False,
             sender=None, to=None, host=None, port=None,
-            user=None, password=None, timeout=None, use_ssl=False):
+            user=None, password=None, timeout=None,
+            use_ssl=False, use_tls=False):
         try:
             message = self.mail.Message(sender=sender, to=to,
                                         subject=subject, body=body)
             mailer = self.mail.Mailer(host=host, port=port,
                                       user=user, password=password,
-                                      timeout=timeout, use_ssl=use_ssl)
+                                      timeout=timeout, use_ssl=use_ssl,
+                                      use_tls=use_tls)
             mailer.send(message)
         except Exception, exc:
             if not fail_silently:

+ 7 - 1
celery/utils/mail.py

@@ -40,13 +40,14 @@ class Message(object):
 class Mailer(object):
 
     def __init__(self, host="localhost", port=0, user=None, password=None,
-            timeout=2, use_ssl=False):
+            timeout=2, use_ssl=False, use_tls=False):
         self.host = host
         self.port = port
         self.user = user
         self.password = password
         self.timeout = timeout
         self.use_ssl = use_ssl
+        self.use_tls = use_tls
 
     def send(self, message):
         if supports_timeout:
@@ -66,6 +67,11 @@ class Mailer(object):
         else:
             client = smtplib.SMTP(self.host, self.port, **kwargs)
 
+        if self.use_tls:
+            client.ehlo()
+            client.starttls()
+            client.ehlo()
+
         if self.user and self.password:
             client.login(self.user, self.password)
 

+ 7 - 0
docs/configuration.rst

@@ -1026,6 +1026,13 @@ EMAIL_USE_SSL
 
 Use SSL when connecting to the SMTP server.  Disabled by default.
 
+.. setting:: EMAIL_USE_TLS
+
+EMAIL_USE_TLS
+~~~~~~~~~~~~~
+
+Use TLS when connecting to the SMTP server.  Disabled by default.
+
 .. setting:: EMAIL_TIMEOUT
 
 EMAIL_TIMEOUT