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