"Loris Bennett" <loris.benn...@fu-berlin.de> writes: > Cameron Simpson <c...@cskk.id.au> writes: > >> On 01Nov2024 10:10, Loris Bennett <loris.benn...@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.
Sorry, I am confusing the terminology here. The 'body' seems to be the headers plus the 'content'. So I can print the *content* without the headers OK, but I can't easily print all the headers separately. If just print the body, i.e. headers plus content, the umlauts in the content are not resolved. -- This signature is currently under constuction. -- https://mail.python.org/mailman/listinfo/python-list