[Python-Dev] headers api for email package (original) (raw)

Barry Warsaw barry at python.org
Mon Apr 13 16:28:32 CEST 2009


On Apr 11, 2009, at 8:39 AM, Chris Withers wrote:

Barry Warsaw wrote:

>>> message['Subject'] The raw bytes or the decoded unicode? A header object.

Yep. You got there before I did. :)

Okay, so you've picked one. Now how do you spell the other way? str(message['Subject'])

Yes for unstructured headers like Subject. For structured headers...
hmm.

bytes(message['Subject'])

Yes.

Now, setting headers. Sometimes you have some unicode thing and sometimes you have some bytes. You need to end up with bytes in the ASCII range and you'd like to leave the header value unencoded if so. But in both cases, you might have bytes or characters outside that range, so you need an explicit encoding, defaulting to utf-8 probably. >>> Message.setheader('Subject', 'Some text', encoding='utf-8') >>> Message.setheader('Subject', b'Some bytes') Where you just want "a damned valid email and stop making my life hard!": Message['Subject']='Some text'

Yes. In which case I propose we guess the encoding as 1) ascii, 2)
utf-8, 3) wtf?

Where you care about what encoding is used:

Message['Subject']=Header('Some text',encoding='utf-8')

Yes.

If you have bytes, for whatever reason:

Message['Subject']=b'some bytes'.decode('utf-8') ...because only you know what encoding those bytes use!

So you're saying that setitem() should not accept raw bytes?

-Barry

-------------- next part -------------- A non-text attachment was scrubbed... Name: PGP.sig Type: application/pgp-signature Size: 304 bytes Desc: This is a digitally signed message part URL: <http://mail.python.org/pipermail/python-dev/attachments/20090413/9df3eb61/attachment.pgp>



More information about the Python-Dev mailing list