Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #39963
| Newsgroups | comp.lang.python |
|---|---|
| Date | 2013-02-26 07:29 -0800 |
| References | <fc332ca1-e77e-4cab-a96f-53b49e734407@googlegroups.com> <512c5fe3$0$30001$c3e8da3$5496439d@news.astraweb.com> |
| Message-ID | <c70fdc7f-9c4c-44e1-8ac4-74bb08c345dd@googlegroups.com> (permalink) |
| Subject | Re: stmplib MIMEText charset weirdness |
| From | "Adam W." <AWasilenko@gmail.com> |
On Tuesday, February 26, 2013 2:10:28 AM UTC-5, Steven D'Aprano wrote:
> On Mon, 25 Feb 2013 20:00:24 -0800, Adam W. wrote:
>
> The documentation for MIMEText is rather terse, but it implies that the
>
> parameter given should be a string, not bytes:
>
>
>
> http://docs.python.org/3.2/library/email.mime#email.mime.text.MIMEText
>
>
>
> If I provide a string, it seems to work fine:
>
>
Ok, working under the assumption you need to provide it a string, it still leaves the question why adding the header after the fact (to a string input) does not produce the same result as declaring the encoding type inline.
>
> > As opposed to:
>
> >
>
> >>>> text = MIMEText('❤¥'.encode('utf-8'), 'html', 'utf-8')
>
> >>>> text.as_string()
>
> > 'Content-Type: text/html; charset="utf-8"\nMIME-Version:
>
> > 1.0\nContent-Transfer-Encoding: base64\n\n4p2kwqU=\n'
>
>
>
>
>
> My wild guess is that it is an accident (possibly a bug) that the above
>
> works at all. I think it shouldn't; MIMEText is expecting a string, and
>
> you provide a bytes object. The documentation for the email package
>
> states:
>
>
>
>
>
> [quote]
>
> Here are the major differences between email version 5.0 and version 4:
>
>
>
> All operations are on unicode strings. Text inputs must be strings,
>
> text outputs are strings. Outputs are limited to the ASCII character set
>
> and so can be encoded to ASCII for transmission. Inputs are also limited
>
> to ASCII; this is an acknowledged limitation of email 5.0 and means it
>
> can only be used to parse email that is 7bit clean.
>
> [end quote]
>
>
>
> http://docs.python.org/3.2/library/email.html
>
I find this limitation hard to believe, why bother with encoding flags if it can only ever accept ASCII anyway?
The reason this issue came up was because I was adding the header after like in my examples and it wasn't working, so I Google'd around and found this Stackoverflow: http://stackoverflow.com/questions/10295530/how-to-set-a-charset-in-email-using-smtplib-in-python-2-7
Which seemed to be doing exactly what I wanted, with the only difference is the inline deceleration of utf-8, with that change it started working as desired...
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
stmplib MIMEText charset weirdness "Adam W." <AWasilenko@gmail.com> - 2013-02-25 20:00 -0800
Re: stmplib MIMEText charset weirdness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-26 07:10 +0000
Re: stmplib MIMEText charset weirdness "Adam W." <AWasilenko@gmail.com> - 2013-02-26 07:29 -0800
Re: stmplib MIMEText charset weirdness Terry Reedy <tjreedy@udel.edu> - 2013-02-26 14:46 -0500
csiph-web