--- a/hgext/patchbomb.py Fri Oct 19 19:20:33 2007 +0000
+++ b/hgext/patchbomb.py Fri Sep 07 16:48:42 2007 +0200
@@ -224,9 +224,8 @@
pass
os.rmdir(tmpdir)
- really_sending = not (opts['test'] or opts['mbox'])
-
- if really_sending:
+ if not (opts['test'] or opts['mbox']):
+ # really sending
mail.validateconfig(ui)
if not (revs or opts.get('rev') or opts.get('outgoing')):
@@ -361,8 +360,6 @@
ui.write('\n')
- if really_sending:
- mailer = mail.connect(ui)
parent = None
sender_addr = email.Utils.parseaddr(sender)[1]
@@ -411,7 +408,7 @@
ui.status('Sending ', m['Subject'], ' ...\n')
# Exim does not remove the Bcc field
del m['Bcc']
- mailer.sendmail(sender, to + bcc + cc, m.as_string(0))
+ mail.sendmail(ui, sender, to + bcc + cc, m.as_string(0))
cmdtable = {
"email":
--- a/mercurial/mail.py Fri Oct 19 19:20:33 2007 +0000
+++ b/mercurial/mail.py Fri Sep 07 16:48:42 2007 +0200
@@ -67,7 +67,13 @@
return _sendmail(ui, method)
def sendmail(ui, sender, recipients, msg):
- return connect(ui).sendmail(sender, recipients, msg)
+ try:
+ return connect(ui).sendmail(sender, recipients, msg)
+ except smtplib.SMTPRecipientsRefused, inst:
+ recipients = [r[1] for r in inst.recipients.values()]
+ raise util.Abort('\n' + '\n'.join(recipients))
+ except smtplib.SMTPException, inst:
+ raise util.Abort(inst)
def validateconfig(ui):
'''determine if we have enough config data to try sending email.'''