Root cause: parsedate_to_datetime preserves local timezone (e.g., +0800)
but strftime strips it, producing local time string (17:00) compared
against UTC cursor (09:00). Local > UTC → same email never filtered.
Fix: convert received_dt to UTC via astimezone(timezone.utc) before
formatting to ISO string for comparison.
Verified: job log changed from sent=1 (every run) to sent=0 (no new mail).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>