--- stgit.orig/commands/mail.py 2005-08-03 21:04:10.000000000 +0200 +++ stgit/commands/mail.py 2005-09-17 14:57:23.000000000 +0200 @@ -78,11 +78,14 @@ metavar = '[PATCH1][:[PATCH2]]', help = 'e-mail patches between PATCH1 and PATCH2'), make_option('--to', - help = 'Add TO to the To: list'), + help = 'Add TO to the To: list', + action = 'append'), make_option('--cc', - help = 'Add CC to the Cc: list'), + help = 'Add CC to the Cc: list', + action = 'append'), make_option('--bcc', - help = 'Add BCC to the Bcc: list'), + help = 'Add BCC to the Bcc: list', + action = 'append'), make_option('-t', '--template', metavar = 'FILE', help = 'use FILE as the message template'), make_option('-f', '--first', metavar = 'FILE', @@ -112,7 +115,10 @@ """Return a two elements tuple: (from, [to]) """ def __addr_list(string): - return re.split('.*?([\w\.]+@[\w\.]+)', string)[1:-1:2] + m = re.search('[^@\s<,]+@[^>\s,]+', string); + if (m == None): + return [] + return [ m.group() ] + __addr_list(string[m.end():]) from_addr_list = [] to_addr_list = [] @@ -152,6 +158,25 @@ s.quit() +def __build_address_headers(options): + headers_end = '' + if options.to: + headers_end += 'To: ' + for to in options.to: + headers_end += '%s,' % to + headers_end = headers_end[:-1] + '\n' + if options.cc: + headers_end += 'Cc: ' + for cc in options.cc: + headers_end += '%s,' % cc + headers_end = headers_end[:-1] + '\n' + if options.bcc: + headers_end += 'Bcc: ' + for bcc in options.bcc: + headers_end += '%s,' % bcc + headers_end = headers_end[:-1] + '\n' + return headers_end + def __build_first(tmpl, total_nr, msg_id, options): """Build the first message (series description) to be sent via SMTP """ @@ -160,12 +185,7 @@ maintainer = '' headers_end = '' - if options.to: - headers_end += 'To: %s\n' % options.to - if options.cc: - headers_end += 'Cc: %s\n' % options.cc - if options.bcc: - headers_end += 'Bcc: %s\n' % options.bcc + headers_end += __build_address_headers(options) headers_end += 'Message-Id: %s\n' % msg_id total_nr_str = str(total_nr) @@ -210,12 +230,7 @@ maintainer = '%s <%s>' % (p.get_commname(), p.get_commemail()) headers_end = '' - if options.to: - headers_end += 'To: %s\n' % options.to - if options.cc: - headers_end += 'Cc: %s\n' % options.cc - if options.bcc: - headers_end += 'Bcc: %s\n' % options.bcc + headers_end += __build_address_headers(options) headers_end += 'Message-Id: %s\n' % msg_id if ref_id: headers_end += "In-Reply-To: %s\n" % ref_id