When imaplib.append is called, it should convert line endings from whatever they are (\r, \n or \r\n) to the format required by rfc2822 (in turn, required by rfc1730), i.e. CRLF - \r\n. The email package generates mail with Python "internal" line endings (i.e. \n), and so if a message is flattened and then appended via imap improper line endings are sent. While some imap servers are ok with this, at least one (Communigate Pro) mangles the message (all the headers become part of the body). smtplib has an example of how to do this.
Logged In: YES user_id=196212 This is a bug. Can't think how it's managed to survive for so long (there must be a lot of forgiving imap servers out there). Anyway, I've just checked in a fix (based on the smtplib code - thanks for the ref.) And thanks for the bug report.
Logged In: YES user_id=552329 By the way, since posting this there was some discussion about the re used in smtplib. Tim Peters, Tim Stone and Skip Montareo eventually agreed (more or less) that CRLF_RE = re.compile(r'\r\n|\r
\n') was better than the one in smtplib. (I really ought to suggest that to whoever maintains smtplib as well...) But anyway, thanks for fixing it. I must say that the imap servers I have access to are forgiving enough - but it only takes one...