Changeset 310 for trunk/email2trac.py.in
- Timestamp:
- 02/02/10 16:53:43 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/email2trac.py.in
r309 r310 375 375 return s 376 376 377 378 def email_header_txt(self, m): 379 """ 380 Display To and CC addresses in description field 381 """ 382 s = '' 383 #if m['To'] and len(m['To']) > 0 and m['To'] != 'hic@sara.nl': 384 if m['To'] and len(m['To']) > 0: 385 s = "'''To:''' %s\r\n" %(m['To']) 386 if m['Cc'] and len(m['Cc']) > 0: 387 s = "%s'''Cc:''' %s\r\n" % (s, m['Cc']) 388 389 return self.email_to_unicode(s) 390 391 392 def get_sender_info(self, message): 393 """ 394 Get the default author name and email address from the message 395 """ 396 397 self.email_to = self.email_to_unicode(message['to']) 398 self.to_name, self.to_email_addr = email.Utils.parseaddr (self.email_to) 399 400 self.email_from = self.email_to_unicode(message['from']) 401 self.email_name, self.email_addr = email.Utils.parseaddr(self.email_from) 402 403 ## Trac can not handle author's name that contains spaces 404 # and forbid the ticket email address as author field 405 406 if self.email_addr == self.trac_smtp_from: 407 self.author = "email2trac" 408 else: 409 self.author = self.email_addr 410 411 if self.IGNORE_TRAC_USER_SETTINGS: 412 return 413 414 # Is this a registered user, use email address as search key: 415 # result: 416 # u : login name 417 # n : Name that the user has set in the settings tab 418 # e : email address that the user has set in the settings tab 419 # 420 users = [ (u,n,e) for (u, n, e) in self.env.get_known_users(self.db) 421 if e and (e.lower() == self.email_addr.lower()) ] 422 423 if len(users) == 1: 424 self.email_from = users[0][0] 425 self.author = users[0][0] 426 427 def set_reply_fields(self, ticket, message): 428 """ 429 Set all the right fields for a new ticket 430 """ 431 if self.DEBUG: 432 print 'TD: set_reply_fields' 433 434 ## Only use name or email adress 435 #ticket['reporter'] = self.email_from 436 ticket['reporter'] = self.author 437 438 439 # Put all CC-addresses in ticket CC field 440 # 441 if self.REPLY_ALL: 442 443 email_cc = '' 444 445 cc_addrs = email.Utils.getaddresses( message.get_all('cc', []) ) 446 447 if not cc_addrs: 448 return 449 450 ## Build a list of forbidden CC addresses 451 # 452 #to_addrs = email.Utils.getaddresses( message.get_all('to', []) ) 453 #to_list = list() 454 #for n,e in to_addrs: 455 # to_list.append(e) 456 457 # Remove reporter email address if notification is 458 # on 459 # 460 if self.notification: 461 try: 462 cc_addrs.remove((self.author, self.email_addr)) 463 except ValueError, detail: 464 pass 465 466 for name,addr in cc_addrs: 467 468 ## Prevent mail loop 469 # 470 #if addr in to_list: 471 472 if addr == self.trac_smtp_from: 473 if self.DEBUG: 474 print "Skipping %s mail address for CC-field" %(addr) 475 continue 476 477 if email_cc: 478 email_cc = '%s, %s' %(email_cc, addr) 479 else: 480 email_cc = addr 481 482 if email_cc: 483 if self.DEBUG: 484 print 'TD: set_reply_fields: %s' %email_cc 485 486 ticket['cc'] = self.email_to_unicode(email_cc) 487 377 488 def debug_body(self, message_body, tempfile=False): 378 489 if tempfile: … … 423 534 except OSError: 424 535 pass 425 426 def email_header_txt(self, m):427 """428 Display To and CC addresses in description field429 """430 s = ''431 #if m['To'] and len(m['To']) > 0 and m['To'] != 'hic@sara.nl':432 if m['To'] and len(m['To']) > 0:433 s = "'''To:''' %s\r\n" %(m['To'])434 if m['Cc'] and len(m['Cc']) > 0:435 s = "%s'''Cc:''' %s\r\n" % (s, m['Cc'])436 437 return self.email_to_unicode(s)438 439 440 def get_sender_info(self, message):441 """442 Get the default author name and email address from the message443 """444 445 self.email_to = self.email_to_unicode(message['to'])446 self.to_name, self.to_email_addr = email.Utils.parseaddr (self.email_to)447 448 self.email_from = self.email_to_unicode(message['from'])449 self.email_name, self.email_addr = email.Utils.parseaddr(self.email_from)450 451 ## Trac can not handle author's name that contains spaces452 # and forbid the ticket email address as author field453 454 if self.email_addr == self.trac_smtp_from:455 self.author = "email2trac"456 else:457 self.author = self.email_addr458 459 if self.IGNORE_TRAC_USER_SETTINGS:460 return461 462 # Is this a registered user, use email address as search key:463 # result:464 # u : login name465 # n : Name that the user has set in the settings tab466 # e : email address that the user has set in the settings tab467 #468 users = [ (u,n,e) for (u, n, e) in self.env.get_known_users(self.db)469 if e and (e.lower() == self.email_addr.lower()) ]470 471 if len(users) == 1:472 self.email_from = users[0][0]473 self.author = users[0][0]474 475 def set_reply_fields(self, ticket, message):476 """477 Set all the right fields for a new ticket478 """479 if self.DEBUG:480 print 'TD: set_reply_fields'481 482 ## Only use name or email adress483 #ticket['reporter'] = self.email_from484 ticket['reporter'] = self.author485 486 487 # Put all CC-addresses in ticket CC field488 #489 if self.REPLY_ALL:490 491 email_cc = ''492 493 cc_addrs = email.Utils.getaddresses( message.get_all('cc', []) )494 495 if not cc_addrs:496 return497 498 ## Build a list of forbidden CC addresses499 #500 #to_addrs = email.Utils.getaddresses( message.get_all('to', []) )501 #to_list = list()502 #for n,e in to_addrs:503 # to_list.append(e)504 505 # Remove reporter email address if notification is506 # on507 #508 if self.notification:509 try:510 cc_addrs.remove((self.author, self.email_addr))511 except ValueError, detail:512 pass513 514 for name,addr in cc_addrs:515 516 ## Prevent mail loop517 #518 #if addr in to_list:519 520 if addr == self.trac_smtp_from:521 if self.DEBUG:522 print "Skipping %s mail address for CC-field" %(addr)523 continue524 525 if email_cc:526 email_cc = '%s, %s' %(email_cc, addr)527 else:528 email_cc = addr529 530 if email_cc:531 if self.DEBUG:532 print 'TD: set_reply_fields: %s' %email_cc533 534 ticket['cc'] = self.email_to_unicode(email_cc)535 536 536 537 def save_email_for_debug(self, message, tempfile=False):
Note: See TracChangeset
for help on using the changeset viewer.