How to manage accented characters in mail header?

Peter Pearson pkpearson at nowhere.invalid
Sat Jan 4 10:00:21 EST 2025


On Sat, 4 Jan 2025 14:31:24 +0000, Chris Green <cl at isbd.net> 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 <sebastien.crignon at amvs.fr>
>
>
> 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?= <sebastien.crignon at amvs.fr>
>
>
> 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.


More information about the Python-list mailing list