Changeset 299


Ignore:
Timestamp:
01/11/10 13:31:12 (12 years ago)
Author:
bas
Message:

prevent a mail loop for new tickets when reply_all is set and cc-address is also ticket mail address, closes #172

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/email2trac.py.in

    r297 r299  
    465465                Set all the right fields for a new ticket
    466466                """
     467                if self.DEBUG:
     468                        print 'TD: set_reply_fields'
    467469
    468470                ## Only use name or email adress
     
    474476                #
    475477                if self.REPLY_ALL:
    476                         #tos = message.get_all('to', [])
    477                         ccs = message.get_all('cc', [])
    478 
    479                         addrs = email.Utils.getaddresses(ccs)
    480                         if not addrs:
     478
     479                        email_cc = ''
     480
     481                        cc_addrs = email.Utils.getaddresses( message.get_all('cc', []) )
     482
     483                        if not cc_addrs:
    481484                                return
    482485
     486                        ## Build a list of forbidden CC addresses
     487                        #
     488                        to_addrs = email.Utils.getaddresses( message.get_all('to', []) )
     489                        to_list = list()
     490                        for n,e in to_addrs:
     491                                to_list.append(e)
     492                               
    483493                        # Remove reporter email address if notification is
    484494                        # on
     
    486496                        if self.notification:
    487497                                try:
    488                                         addrs.remove((self.author, self.email_addr))
     498                                        cc_addrs.remove((self.author, self.email_addr))
    489499                                except ValueError, detail:
    490500                                        pass
    491501
    492                         for name,mail in addrs:
    493                                 try:
    494                                         mail_list = '%s, %s' %(mail_list, mail)
    495                                 except UnboundLocalError, detail:
    496                                         mail_list = mail
    497 
    498                         if mail_list:
    499                                 ticket['cc'] = self.email_to_unicode(mail_list)
     502                        for name,addr in cc_addrs:
     503               
     504                                ## Prevent mail loop
     505                                #
     506                                if addr in to_list:
     507                                        if self.DEBUG:
     508                                                print "Skipping %s mail address for CC-field" %(addr)
     509                                        continue
     510
     511                                if email_cc:
     512                                        email_cc = '%s, %s' %(email_cc, addr)
     513                                else:
     514                                        email_cc = addr
     515
     516                        if email_cc:
     517                                if self.DEBUG:
     518                                        print 'TD: set_reply_fields: %s' %email_cc
     519
     520                                ticket['cc'] = self.email_to_unicode(email_cc)
    500521
    501522        def save_email_for_debug(self, message, tempfile=False):
Note: See TracChangeset for help on using the changeset viewer.