From 1c58279292df452db16950516f7af4ca7d48e750 Mon Sep 17 00:00:00 2001 From: kyx236 Date: Fri, 13 Feb 2026 00:05:58 +0800 Subject: [PATCH] feat: Update mail service implementation and its configuration example. --- config.toml.example | 7 +++---- mail_service.py | 27 +++++++-------------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/config.toml.example b/config.toml.example index d272bb6..6471910 100644 --- a/config.toml.example +++ b/config.toml.example @@ -19,15 +19,14 @@ allowed_users = [] # 允许使用的用户ID列表(空=不限 # --- 邮箱系统(轮询使用,API 接口相同)--- # 可添加多个 [[mail]] 块 +# api_token: 直接配置 API Token,无需管理员账号密码 [[mail]] base_url = "https://mail.example.com/" -admin_email = "admin@example.com" -admin_pass = "your_password" +api_token = "your_api_token_here" domains = ["example.com"] # [[mail]] # base_url = "https://mail2.example.com/" -# admin_email = "admin@mail2.example.com" -# admin_pass = "pass2" +# api_token = "your_api_token_here" # domains = ["domain2.com", "domain3.com"] diff --git a/mail_service.py b/mail_service.py index 468ef1c..9bef2f9 100644 --- a/mail_service.py +++ b/mail_service.py @@ -8,27 +8,15 @@ import requests as standard_requests # 用于普通API交互 class MailSystem: """单个邮箱系统实例,支持多域名""" - def __init__(self, base_url, admin_email, admin_password, domains): + def __init__(self, base_url, api_token, domains): self.base_url = base_url self.domains = domains # 该系统支持的域名列表 - self.token = self._get_token(admin_email, admin_password) + self.token = api_token self.headers = {"Authorization": self.token} - - def _get_token(self, email, password): - """获取身份令牌,这是我们的通行证""" - url = f"{self.base_url}/api/public/genToken" - payload = {"email": email, "password": password} - try: - resp = standard_requests.post(url, json=payload) - data = resp.json() - if data['code'] == 200: - print(f"[+] 令牌获取成功 ({self.base_url}): {data['data']['token'][:10]}...") - return data['data']['token'] - else: - raise Exception(f"获取Token失败: {data}") - except Exception as e: - print(f"[-] 连接邮件系统失败 ({self.base_url}): {e}") - return None + if self.token: + print(f"[+] 邮箱系统已连接 ({self.base_url}), Token: {self.token[:10]}...") + else: + print(f"[-] 邮箱系统 Token 为空 ({self.base_url})") def create_user(self, email_prefix, domain=None): """在系统里注册一个新邮箱用户""" @@ -103,8 +91,7 @@ class MailPool: for cfg in mail_configs: ms = MailSystem( base_url=cfg["base_url"], - admin_email=cfg["admin_email"], - admin_password=cfg["admin_pass"], + api_token=cfg.get("api_token", ""), domains=cfg["domains"], ) if ms.token: # 只添加连接成功的系统