Ticket #2970: TLS-support.patch
| File TLS-support.patch, 1.9 KB (added by eblot, 3 years ago) |
|---|
-
trac/notification.py
70 70 71 71 If this option is disabled (the default), recipients are put on BCC 72 72 (''since 0.10'').""") 73 74 use_tls = BoolOption('notification', 'use_tls', 'false', 75 """Use SSL/TLS to send notifications (''since 0.10'').""") 73 76 74 77 maxheaderlen = Option('notification', 'maxheaderlen', '76', 75 """Maximum length of SMTP headers .(''since 0.10'').""")78 """Maximum length of SMTP headers (''since 0.10'').""") 76 79 77 80 78 81 class Notify(object): … … 134 137 def __init__(self, env): 135 138 Notify.__init__(self, env) 136 139 140 self._use_tls = self.env.config.getbool('notification', 'use_tls') 137 141 self._init_pref_encoding() 138 142 # Get the email addresses of all known users 139 143 self.email_map = {} … … 251 255 252 256 def begin_send(self): 253 257 self.server = smtplib.SMTP(self.smtp_server, self.smtp_port) 258 # self.server.set_debuglevel(True) 259 if self._use_tls: 260 self.server.ehlo() 261 if not self.server.esmtp_features.has_key('starttls'): 262 raise TracError, "TLS enabled but server does not support TLS" 263 self.server.starttls() 264 self.server.ehlo() 254 265 if self.user_name: 255 266 self.server.login(self.user_name, self.password) 256 267 … … 328 339 self.server.sendmail(msg['From'], recipients, msgtext) 329 340 330 341 def finish_send(self): 331 self.server.quit() 342 if self._use_tls: 343 # avoid false failure detection when the server closes 344 # the SMTP connection with TLS enabled 345 import socket 346 try: 347 self.server.quit() 348 except socket.sslerror: 349 pass 350 else: 351 self.server.quit()
