Fix NoneType encode error in search_emails address formatting
This commit is contained in:
+18
-2
@@ -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 "",
|
||||||
|
|||||||
Reference in New Issue
Block a user