From 6a5d9064f3c50bc6a002675fdafc804a8468c3d0 Mon Sep 17 00:00:00 2001 From: cnlimiter Date: Wed, 18 Mar 2026 16:22:32 +0800 Subject: [PATCH] =?UTF-8?q?fix(tempmail):=20=E4=BC=98=E5=85=88=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=94=A8=E6=88=B7=E9=82=AE=E7=AE=B1api=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/services/temp_mail.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/services/temp_mail.py b/src/services/temp_mail.py index dcd6e33..801ed7d 100644 --- a/src/services/temp_mail.py +++ b/src/services/temp_mail.py @@ -202,16 +202,27 @@ class TempMailService(BaseEmailService): start_time = time.time() seen_mail_ids: set = set() + # 优先使用用户级 JWT,回退到 admin API + cached = self._email_cache.get(email, {}) + jwt = cached.get("jwt") + while time.time() - start_time < timeout: try: - # 使用 admin API 查询邮件,通过 address 参数过滤 - response = self._make_request( - "GET", - "/admin/mails", - params={"limit": 20, "offset": 0, "address": email}, - ) + if jwt: + response = self._make_request( + "GET", + "/user_api/mails", + params={"limit": 20, "offset": 0}, + headers={"x-user-token": jwt, "Content-Type": "application/json", "Accept": "application/json"}, + ) + else: + response = self._make_request( + "GET", + "/admin/mails", + params={"limit": 20, "offset": 0, "address": email}, + ) - # admin/mails 返回格式: {"results": [...], "total": N} + # /user_api/mails 和 /admin/mails 返回格式相同: {"results": [...], "total": N} mails = response.get("results", []) if not isinstance(mails, list): time.sleep(3)