The default Python implementation (at least 2.5 and earlier) fold long e-mail header lines by inserting "\n\t". This causes issues with some e-mail clients that remove both "\n\t". The RFC2822 shows that folding should be done with "\n ". The Python workaround is to use a Header object instead of a string when setting the message headers. Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxxxx> --- stgit/commands/mail.py | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/stgit/commands/mail.py b/stgit/commands/mail.py index e1de847..34262d3 100644 --- a/stgit/commands/mail.py +++ b/stgit/commands/mail.py @@ -170,7 +170,7 @@ def __get_sender(): def __addr_list(msg, header): return [addr for name, addr in - email.Utils.getaddresses(msg.get_all(header, []))] + email.Utils.getaddresses(map(str, msg.get_all(header, [])))] def __parse_addresses(msg): """Return a two elements tuple: (from, [to]) @@ -304,7 +304,8 @@ def __send_message(type, tmpl, options, *args): def __update_header(msg, header, addr = '', ignore = ()): def __addr_pairs(msg, header, extra): - pairs = email.Utils.getaddresses(msg.get_all(header, []) + extra) + pairs = email.Utils.getaddresses(map(str, + msg.get_all(header, []) + extra)) # remove pairs without an address and resolve the aliases return [address_or_alias(p) for p in pairs if p[1]] @@ -408,7 +409,8 @@ def __encode_message(msg): pass words.append(email.Header.Header(uword).encode()) new_val = ' '.join(words) - msg.replace_header(header, new_val) + msg.replace_header(header, + email.Header.Header(new_val, header_name = header)) # encode the body and set the MIME and encoding headers if msg.is_multipart(): -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html