changeset 2495:9766f0baf5c5 beta

Use local_hostname in mailer
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 20 Jun 2012 21:12:56 +0200
parents c4d418b440d1
children fddd8e3fc157
files rhodecode/lib/rcmail/smtp_mailer.py rhodecode/lib/rcmail/utils.py
diffstat 2 files changed, 25 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/rcmail/smtp_mailer.py	Wed Jun 20 21:10:40 2012 +0200
+++ b/rhodecode/lib/rcmail/smtp_mailer.py	Wed Jun 20 21:12:56 2012 +0200
@@ -27,6 +27,7 @@
 from socket import sslerror
 from email.utils import formatdate
 from rhodecode.lib.rcmail.message import Message
+from rhodecode.lib.rcmail.utils import DNS_NAME
 
 
 class SmtpMailer(object):
@@ -68,9 +69,11 @@
         raw_msg = msg.to_message()
 
         if self.ssl:
-            smtp_serv = smtplib.SMTP_SSL(self.mail_server, self.mail_port)
+            smtp_serv = smtplib.SMTP_SSL(self.mail_server, self.mail_port,
+                                         local_hostname=DNS_NAME.get_fqdn())
         else:
-            smtp_serv = smtplib.SMTP(self.mail_server, self.mail_port)
+            smtp_serv = smtplib.SMTP(self.mail_server, self.mail_port,
+                                     local_hostname=DNS_NAME.get_fqdn())
 
         if self.tls:
             smtp_serv.ehlo()
@@ -95,4 +98,4 @@
             smtp_serv.quit()
         except sslerror:
             # sslerror is raised in tls connections on closing sometimes
-            pass
+            smtp_serv.close()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/lib/rcmail/utils.py	Wed Jun 20 21:12:56 2012 +0200
@@ -0,0 +1,19 @@
+"""
+Email message and email sending related helper functions.
+"""
+
+import socket
+
+
+# Cache the hostname, but do it lazily: socket.getfqdn() can take a couple of
+# seconds, which slows down the restart of the server.
+class CachedDnsName(object):
+    def __str__(self):
+        return self.get_fqdn()
+
+    def get_fqdn(self):
+        if not hasattr(self, '_fqdn'):
+            self._fqdn = socket.getfqdn()
+        return self._fqdn
+
+DNS_NAME = CachedDnsName()
\ No newline at end of file