Fix NoneType encode error in search_emails address formatting

This commit is contained in:
Kacper Kwapisz
2026-03-23 00:00:47 +01:00
parent dc7d379334
commit 6e9f1ca617
+18 -2
View File
@@ -485,11 +485,27 @@ async def search_emails(
env = msg_data.get(b"ENVELOPE") env = msg_data.get(b"ENVELOPE")
if not env: if not env:
continue 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( results.append(
{ {
"uid": uid, "uid": uid,
"from": str(env.from_[0]) if env.from_ else "", "from": _fmt_addr(env.from_[0]) if env.from_ else "",
"to": [str(a) for a in (env.to or [])], "to": [_fmt_addr(a) for a in (env.to or [])],
"subject": env.subject.decode(errors="replace") "subject": env.subject.decode(errors="replace")
if env.subject if env.subject
else "", else "",