Ignore:
Timestamp:
12/02/08 15:22:15 (4 years ago)
Author:
rcorsaro
Message:

merged latest announcer trac-hacks commits

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/trac-hacks/announcerplugin/announcerplugin/distributors/email_distributor.py

    r631 r745  
    33from trac.config import Option, BoolOption, IntOption, OrderedExtensionsOption 
    44from trac.util import get_pkginfo 
     5from trac.util.translation import _ 
     6 
    57from announcerplugin.api import IAnnouncementDistributor 
    68from announcerplugin.api import IAnnouncementFormatter 
     
    1315from email.MIMEText import MIMEText 
    1416from email.Utils import formatdate 
    15 from email.header import Header 
     17try: 
     18    from email.header import Header 
     19except: 
     20    from email.Header import Header 
    1621import time, Queue, threading, smtplib 
    1722 
     
    119124     
    120125    default_email_format = Option('announcer', 'default_email_format', 'text/plain') 
    121      
     126 
    122127    def __init__(self): 
    123         if self.smtp_enabled and self.use_threaded_delivery: 
    124             self._deliveryQueue = Queue.Queue() 
    125             thread = DeliveryThread(self._deliveryQueue, self._transmit) 
     128        self.delivery_queue = None 
     129 
     130    def get_delivery_queue(self): 
     131        if not self.delivery_queue: 
     132            self.delivery_queue = Queue.Queue() 
     133            thread = DeliveryThread(self.delivery_queue, self._transmit) 
    126134            thread.start() 
     135 
     136        return self.delivery_queue 
    127137     
    128138    # IAnnouncementDistributor 
     
    133143        if not self.smtp_enabled: 
    134144            return 
    135          
    136145        public_cc = self.config.getbool('announcer', 'use_public_cc') 
    137146        to = self.config.get('announcer', 'smtp_to') 
     
    228237        subject = formatter.format_subject(transport, event.realm, format, event) 
    229238         
    230         charset = self.env.config.get('trac', 'default_charset') or 'utf-8' 
     239        charset = self.env.config.get('trac', 'default_charset', 'utf-8') 
    231240        alternate_format = formatter.get_format_alternative(transport, event.realm, format) 
    232241        if alternate_format: 
     
    277286        package = (self.smtp_from, [x[2] for x in recipients if x], rootMessage.as_string() ) 
    278287        if self.use_threaded_delivery: 
    279             self._deliveryQueue.put(package) 
     288            self.get_delivery_queue().put(package) 
    280289        else: 
    281290            self._transmit(*package) 
     
    285294 
    286295    def _transmit(self, smtpfrom, addresses, message): 
    287         smtp = smtplib.SMTP() 
    288         smtp.connect(self.smtp_server) 
     296        smtp = smtplib.SMTP(self.smtp_server, self.smtp_port) 
    289297        if self.use_tls: 
    290298            smtp.ehlo() 
     299            if not smtp.esmtp_features.has_key('starttls'): 
     300                raise TracError(_("TLS enabled but server does not support " \ 
     301                        "TLS")) 
    291302            smtp.starttls() 
    292303            smtp.ehlo() 
Note: See TracChangeset for help on using the changeset viewer.