[Python-Dev] headers api for email package

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...  

> bytes(message['Subject'])


>> 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.set_header('Subject', 'Some text', encoding='utf-8')
>> >>> Message.set_header('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')


> 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?


-------------- 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