From ba02799b18248648537bb26986c35f0eb478c83f Mon Sep 17 00:00:00 2001 From: Logic Date: Sat, 21 Mar 2026 16:45:43 +0800 Subject: [PATCH] fix(mail): normalize provider selection --- src/vmail_client.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/vmail_client.py b/src/vmail_client.py index 1f05635..3d2f215 100644 --- a/src/vmail_client.py +++ b/src/vmail_client.py @@ -356,14 +356,20 @@ class YYDSMailClient(BaseMailClient): raise TimeoutError(f"No OTP received within {timeout}s") -def get_mail_client(provider: str = "vmail") -> BaseMailClient: +def get_mail_client(provider: str | None = None) -> BaseMailClient: """Get mail client by provider name.""" - if provider == "mailtm": + raw_provider = settings.mail_provider if provider is None else provider + normalized = (raw_provider or "").strip().lower() + + if normalized == "vmail": + return VMailClient() + if normalized == "mailtm": return MailTMClient() - if provider == "yyds": + if normalized == "yyds": return YYDSMailClient() - return VMailClient() # default to vmail - -# Default instance -MailClient = get_mail_client("vmail") + if not normalized: + raise ValueError("MAIL_PROVIDER is empty; expected one of: vmail, mailtm, yyds") + raise ValueError( + f"Unsupported MAIL_PROVIDER={raw_provider!r}; expected one of: vmail, mailtm, yyds" + )