From 6e9f1ca617e4841de385b546ffada756e0d4a2c0 Mon Sep 17 00:00:00 2001 From: Kacper Kwapisz Date: Mon, 23 Mar 2026 00:00:47 +0100 Subject: [PATCH] Fix NoneType encode error in search_emails address formatting --- src/server.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/server.py b/src/server.py index f75d29e..d3f1e12 100755 --- a/src/server.py +++ b/src/server.py @@ -485,11 +485,27 @@ async def search_emails( env = msg_data.get(b"ENVELOPE") if not env: continue + + def _fmt_addr(addr): + """Format an IMAP envelope address safely.""" + try: + name = addr.name.decode(errors="replace") if addr.name else "" + mailbox = ( + addr.mailbox.decode(errors="replace") + if addr.mailbox + else "" + ) + host = addr.host.decode(errors="replace") if addr.host else "" + email = f"{mailbox}@{host}" if mailbox else "" + return f"{name} <{email}>" if name else email + except Exception: + return str(addr) + results.append( { "uid": uid, - "from": str(env.from_[0]) if env.from_ else "", - "to": [str(a) for a in (env.to or [])], + "from": _fmt_addr(env.from_[0]) if env.from_ else "", + "to": [_fmt_addr(a) for a in (env.to or [])], "subject": env.subject.decode(errors="replace") if env.subject else "",