feat: Update mail service implementation and its configuration example.

This commit is contained in:
2026-02-13 00:05:58 +08:00
parent ad7b6196dc
commit 1c58279292
2 changed files with 10 additions and 24 deletions

View File

@@ -19,15 +19,14 @@ allowed_users = [] # 允许使用的用户ID列表空=不限
# --- 邮箱系统轮询使用API 接口相同)--- # --- 邮箱系统轮询使用API 接口相同)---
# 可添加多个 [[mail]] 块 # 可添加多个 [[mail]] 块
# api_token: 直接配置 API Token无需管理员账号密码
[[mail]] [[mail]]
base_url = "https://mail.example.com/" base_url = "https://mail.example.com/"
admin_email = "admin@example.com" api_token = "your_api_token_here"
admin_pass = "your_password"
domains = ["example.com"] domains = ["example.com"]
# [[mail]] # [[mail]]
# base_url = "https://mail2.example.com/" # base_url = "https://mail2.example.com/"
# admin_email = "admin@mail2.example.com" # api_token = "your_api_token_here"
# admin_pass = "pass2"
# domains = ["domain2.com", "domain3.com"] # domains = ["domain2.com", "domain3.com"]

View File

@@ -8,27 +8,15 @@ import requests as standard_requests # 用于普通API交互
class MailSystem: 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.base_url = base_url
self.domains = domains # 该系统支持的域名列表 self.domains = domains # 该系统支持的域名列表
self.token = self._get_token(admin_email, admin_password) self.token = api_token
self.headers = {"Authorization": self.token} self.headers = {"Authorization": self.token}
if self.token:
def _get_token(self, email, password): print(f"[+] 邮箱系统已连接 ({self.base_url}), Token: {self.token[:10]}...")
"""获取身份令牌,这是我们的通行证""" else:
url = f"{self.base_url}/api/public/genToken" print(f"[-] 邮箱系统 Token 为空 ({self.base_url})")
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
def create_user(self, email_prefix, domain=None): def create_user(self, email_prefix, domain=None):
"""在系统里注册一个新邮箱用户""" """在系统里注册一个新邮箱用户"""
@@ -103,8 +91,7 @@ class MailPool:
for cfg in mail_configs: for cfg in mail_configs:
ms = MailSystem( ms = MailSystem(
base_url=cfg["base_url"], base_url=cfg["base_url"],
admin_email=cfg["admin_email"], api_token=cfg.get("api_token", ""),
admin_password=cfg["admin_pass"],
domains=cfg["domains"], domains=cfg["domains"],
) )
if ms.token: # 只添加连接成功的系统 if ms.token: # 只添加连接成功的系统