[Email-SIG] [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...
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.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')
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/email-sig/attachments/20090413/9df3eb61/attachment.pgp>
More information about the Email-SIG
mailing list