Backed out changeset 6ac32dcf78a6

This commit is contained in:
Bryan O'Sullivan 2008-01-25 16:04:32 -08:00
parent 7a268371b0
commit 0b03cc2a5a
2 changed files with 25 additions and 32 deletions

View File

@ -381,7 +381,6 @@ def patchbomb(ui, repo, *revs, **opts):
parent = None parent = None
sender_addr = email.Utils.parseaddr(sender)[1] sender_addr = email.Utils.parseaddr(sender)[1]
sendmail = None
for m in msgs: for m in msgs:
try: try:
m['Message-Id'] = genmsgid(m['X-Mercurial-Node']) m['Message-Id'] = genmsgid(m['X-Mercurial-Node'])
@ -427,12 +426,10 @@ def patchbomb(ui, repo, *revs, **opts):
fp.write('\n\n') fp.write('\n\n')
fp.close() fp.close()
else: else:
if not sendmail:
sendmail = mail.connect(ui)
ui.status('Sending ', m['Subject'], ' ...\n') ui.status('Sending ', m['Subject'], ' ...\n')
# Exim does not remove the Bcc field # Exim does not remove the Bcc field
del m['Bcc'] del m['Bcc']
sendmail(ui, sender, to + bcc + cc, m.as_string(0)) mail.sendmail(ui, sender, to + bcc + cc, m.as_string(0))
cmdtable = { cmdtable = {
"email": "email":

View File

@ -38,43 +38,39 @@ def _smtp(ui):
s.login(username, password) s.login(username, password)
return s return s
def _sendmail(ui, sender, recipients, msg): class _sendmail(object):
'''send mail using sendmail.''' '''send mail using sendmail.'''
program = ui.config('email', 'method')
cmdline = '%s -f %s %s' % (program, templater.email(sender), def __init__(self, ui, program):
' '.join(map(templater.email, recipients))) self.ui = ui
ui.note(_('sending mail: %s\n') % cmdline) self.program = program
fp = os.popen(cmdline, 'w')
fp.write(msg) def sendmail(self, sender, recipients, msg):
ret = fp.close() cmdline = '%s -f %s %s' % (
if ret: self.program, templater.email(sender),
raise util.Abort('%s %s' % ( ' '.join(map(templater.email, recipients)))
os.path.basename(program.split(None, 1)[0]), self.ui.note(_('sending mail: %s\n') % cmdline)
util.explain_exit(ret)[0])) fp = os.popen(cmdline, 'w')
fp.write(msg)
ret = fp.close()
if ret:
raise util.Abort('%s %s' % (
os.path.basename(self.program.split(None, 1)[0]),
util.explain_exit(ret)[0]))
def connect(ui): def connect(ui):
'''make a mail connection. return a function to send mail. '''make a mail connection. object returned has one method, sendmail.
call as sendmail(sender, list-of-recipients, msg).''' call as sendmail(sender, list-of-recipients, msg).'''
func = _sendmail method = ui.config('email', 'method', 'smtp')
if ui.config('email', 'method', 'smtp') == 'smtp': if method == 'smtp':
func = _smtp(ui) return _smtp(ui)
def send(ui, sender, recipients, msg): return _sendmail(ui, method)
try:
return func.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)
return send
def sendmail(ui, sender, recipients, msg): def sendmail(ui, sender, recipients, msg):
try: try:
send = connect(ui) return connect(ui).sendmail(sender, recipients, msg)
return send(sender, recipients, msg)
except smtplib.SMTPRecipientsRefused, inst: except smtplib.SMTPRecipientsRefused, inst:
recipients = [r[1] for r in inst.recipients.values()] recipients = [r[1] for r in inst.recipients.values()]
raise util.Abort('\n' + '\n'.join(recipients)) raise util.Abort('\n' + '\n'.join(recipients))