You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
last_recv_ts and last_send_ts timestamps in DiagConnection exposed via info_dict() and the DIAG /connections endpoint
Fixed
Ensure info_dict() returns JSON-safe values on PyPy by converting bytes address components to strings and extracting .value from socket enum attributes
Capture SMTP session data before callback_error fires so that deliverability info (greeting, transcript, TLS details, etc.) is available in context["sessions"] on error
mx_dedup parameter in SMTPClient.message() to control whether domains sharing the same MX host are grouped into a single connection, defaults to False to avoid 451 4.3.0 rejections from servers that refuse multi-domain transactions
Sequential MX session mode for SMTP client (sequential parameter in message()), establishes one connection at a time per MX host to reduce pressure on remote servers that drop concurrent connections from the same source
Changed
Extract initiate_mx() from on_mx_resolved() in SMTP client for clearer separation of DNS collection and connection initiation phases
Added NO_SHARED_CIPHER to SSL_SILENT_REASONS so that no shared cipher errors are silenced
Fixed
Report MX lookup failures as errors instead of silently dropping recipients, invoke callback_error per failed domain and fire callback when all domains fail
Normalize MX host dedup key with .rstrip(".").lower() to avoid case/trailing-dot mismatches splitting identical hosts into separate connections
SMTP session transcript capture gated by SMTP_CAPTURE_TRANSCRIPT environment variable, records the full command/response conversation (excluding DATA payload) with timestamps per entry, capped at 50 entries per session
SMTP Relay and SMTP Activity Tracking sections in doc/configuration.md