On Sat, 4 Jan 2025 14:31:24 +0000, Chris Green <[email protected]> wrote:
> I have a Python script that filters my incoming E-Mail. It has been
> working OK (with various updates and improvements) for many years.
>
> I now have a minor new problem when handling E-Mail with a From: that
> has accented characters in it:-
>
> From: Sébastien Crignon <[email protected]>
>
>
> I use Python mailbox to parse the message:-
>
> import mailbox
> ...
> ...
> msg = mailbox.MaildirMessage(sys.stdin.buffer.read())
>
> Then various mailbox methods to get headers etc.
> I use the following to get the From: address:-
>
> str(msg.get('from', "unknown").lower()
>
> The result has the part with the accented character wrapped as follows:-
>
> From: =?utf-8?B?U8OpYmFzdGllbiBDcmlnbm9u?= <[email protected]>
>
>
> I know I have hit this issue before but I can't rememeber the fix. The
> problem I have now is that searching the above doesn't work as
> expected. Basically I just need to get rid of the ?utf-8? wrapped bit
> altogether as I'm only interested in the 'real' address. How can I
> easily remove the UTF8 section in a way that will work whether or not
> it's there?
This seemed to work for me:
import email.header
text, encoding = email.header.decode_header(some_string)[0]
--
To email me, substitute nowhere->runbox, invalid->com.
--
https://mail.python.org/mailman/listinfo/python-list