Sujet : Re: Printing UTF-8 mail to terminal
De : loris.bennett (at) *nospam* fu-berlin.de (Loris Bennett)
Groupes : comp.lang.pythonDate : 04. Nov 2024, 12:44:03
Autres entêtes
Organisation : FUB-IT, Freie Universität Berlin
Message-ID : <87ed3rmg7g.fsf@zedat.fu-berlin.de>
References : 1 2 3
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Cameron Simpson <
cs@cskk.id.au> writes:
On 01Nov2024 10:10, Loris Bennett <loris.bennett@fu-berlin.de> wrote:
as expected. The non-UTF-8 text occurs when I do
>
mail = EmailMessage()
mail.set_content(body, cte="quoted-printable")
...
>
if args.verbose:
print(mail)
>
which is presumably also correct.
>
The question is: What conversion is necessary in order to print the
EmailMessage object to the terminal, such that the quoted-printable
parts are turned (back) into UTF-8?
>
Do you still have access to `body` ? That would be the original
message text? Otherwise maybe:
>
print(mail.get_content())
>
The objective is to obtain the message body Unicode text (i.e. a
regular Python string with the original text, unencoded). And to print
that.
With the following:
######################################################################
import email.message
m = email.message.EmailMessage()
m['Subject'] = 'Übung'
m.set_content('Dies ist eine Übung')
print('== cte: default == \n')
print(m)
print('-- full mail ---')
print(m)
print('-- just content--')
print(m.get_content())
m.set_content('Dies ist eine Übung', cte='quoted-printable')
print('== cte: quoted-printable ==\n')
print('-- full mail --')
print(m)
print('-- just content --')
print(m.get_content())
######################################################################
I get the following output:
######################################################################
== cte: default ==
Subject: Übung
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
RGllcyBpc3QgZWluZSDDnGJ1bmcK
-- full mail ---
Subject: Übung
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
RGllcyBpc3QgZWluZSDDnGJ1bmcK
-- just content--
Dies ist eine Übung
== cte: quoted-printable ==
-- full mail --
Subject: Übung
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Dies ist eine =C3=9Cbung
-- just content --
Dies ist eine Übung
######################################################################
So in both cases the subject is fine, but it is unclear to me how to
print the body. Or rather, I know how to print the body OK, but I don't
know how to print the headers separately - there seems to be nothing
like 'get_headers()'. I can use 'get('Subject) etc. and reconstruct the
headers, but that seems a little clunky.
Cheers,
Loris
-- This signature is currently under constuction.