[GSoC PATCH v7 0/2] send-email: improve error capture and status code handling
- From
Zheng Yuting <05zyt30@gmail.com>
- Date
- Mar 23, 2025, 02:21 UTC
- Message-ID
- <20250323022111.20226-1-05ZYT30@gmail.com>
- In-Reply-To
- <20250321025128.68463-1-05ZYT30@gmail.com>
This patch series improves SMTP authentication error handling.
Auth relied solely on return values without capturing exceptions, misjudging non-credential errors as authentication failures.
Patch v7 1/2 wraps the auth process in an eval {} block to catch all exceptions, adds var error for future handling, and var result to return auth state.
Patch v7 2/2 introduces finer-grained SMTP error handling, extracting status codes per RFC 5321 to differentiate between temporary (4yz) and permanent (5yz) errors. For 4yz (transient errors), return 1 and allow retries. For 5yz (permanent errors), return 0 as failure. Unrecognized codes are treated as transient errors by returning 1. If the status code is not caught or no error occurs but no result is defined, return 1 as a transient error. Otherwise, return the authentication result.
Zheng Yuting (2):
send-email: capture errors in an eval {} block
send-email: finer-grained SMTP error handlinggit-send-email.perl | 68 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 14 deletions(-)
-- 2.49.0