Mercurial > hg
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')), |