email package and line ending

Tim Roberts timr at probo.com
Tue Dec 27 00:04:09 EST 2005


Manlio Perillo <manlio_perilloNO at SPAMlibero.it> wrote:
>
>The problem is this code:
>
> >>> import email.Message
> >>> msg = email.Message.Message()
> >>> msg["subject"] = "email bug"
> >>> msg["from"] = "Manlio Perillo"
> >>> print repr(msg.as_string())
>'subject: email bug\nfrom: Manlio Perillo\n\n'
>
>Why line ending is '\n' and not '\r\n' ?
>RFC 2822 says that the delimiter must(?) be '\r\n'.

Because all you have there is a string.  It doesn't have anything to do
with RFC 2822.  \n is probably the safest cross-platform way to represent a
newline in a Python string.

Note that smtplib, which DOES have to worry abouot RFC 2822 compliance,
will replace all standalone \r and \n characters with \r\n.

>email.Header has a bug:
>
>this code causes an infinite recursion:
>
> >>> from email.Header import Header
> >>> h = Header('multiline header', 'iso-8859-1', maxlinelen=4)
> >>> e.encode()

I'm not sure I would call that a bug.  I'd call that a usage error; you've
asked it to accomplish something that cannot be done.  However, it is true
that _split has enough information to diagnose this.
-- 
- Tim Roberts, timr at probo.com
  Providenza & Boekelheide, Inc.



More information about the Python-list mailing list