comparison hgext/patchbomb.py @ 5866:dc6ed2736c81

patchbomb: prompt only once for SMTP password - simplify mail._sendmail to be a function rather than a class - simplify connect to return a function rather than a class - move exception handling from mail.sendmail to mail.connect - use a single connection for all messages in patchbomb
author Matt Mackall <mpm@selenic.com>
date Thu, 17 Jan 2008 13:51:59 -0600
parents 89ea99c7bdfd
children d0576d065993 528c986f0162
comparison
equal deleted inserted replaced
5865:e7127f669edb 5866:dc6ed2736c81
379 ui.write('\n') 379 ui.write('\n')
380 380
381 parent = None 381 parent = None
382 382
383 sender_addr = email.Utils.parseaddr(sender)[1] 383 sender_addr = email.Utils.parseaddr(sender)[1]
384 sendmail = None
384 for m in msgs: 385 for m in msgs:
385 try: 386 try:
386 m['Message-Id'] = genmsgid(m['X-Mercurial-Node']) 387 m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
387 except TypeError: 388 except TypeError:
388 m['Message-Id'] = genmsgid('patchbomb') 389 m['Message-Id'] = genmsgid('patchbomb')
424 fp.write('From %s %s\n' % (sender_addr, date)) 425 fp.write('From %s %s\n' % (sender_addr, date))
425 fp.write(m.as_string(0)) 426 fp.write(m.as_string(0))
426 fp.write('\n\n') 427 fp.write('\n\n')
427 fp.close() 428 fp.close()
428 else: 429 else:
430 if not sendmail:
431 sendmail = mail.connect(ui)
429 ui.status('Sending ', m['Subject'], ' ...\n') 432 ui.status('Sending ', m['Subject'], ' ...\n')
430 # Exim does not remove the Bcc field 433 # Exim does not remove the Bcc field
431 del m['Bcc'] 434 del m['Bcc']
432 mail.sendmail(ui, sender, to + bcc + cc, m.as_string(0)) 435 sendmail(ui, sender, to + bcc + cc, m.as_string(0))
433 436
434 cmdtable = { 437 cmdtable = {
435 "email": 438 "email":
436 (patchbomb, 439 (patchbomb,
437 [('a', 'attach', None, _('send patches as attachments')), 440 [('a', 'attach', None, _('send patches as attachments')),