Merge branch 'fork/Fengsuid/feature/ddg-mail-provider'
Browse files
services/register/mail_provider.py
CHANGED
|
@@ -289,6 +289,7 @@ class DDGMailProvider(BaseMailProvider):
|
|
| 289 |
|
| 290 |
def __init__(self, entry: dict, conf: dict):
|
| 291 |
super().__init__(conf, str(entry.get("provider_ref") or ""))
|
|
|
|
| 292 |
self.ddg_token = str(entry["ddg_token"]).strip()
|
| 293 |
self.cf_api_base = str(entry.get("api_base") or entry.get("cf_api_base") or "").rstrip("/")
|
| 294 |
self.cf_inbox_jwt = str(entry.get("cf_inbox_jwt") or "").strip()
|
|
@@ -349,14 +350,14 @@ class DDGMailProvider(BaseMailProvider):
|
|
| 349 |
ddg_address = f"{ddg_address_part}@duck.com"
|
| 350 |
|
| 351 |
if _is_ddg_alias_duplicate(ddg_address):
|
| 352 |
-
raise RuntimeError(f"DDG日上限已达,别名 {ddg_address} 已存在,自动切换邮箱提供商")
|
| 353 |
|
| 354 |
_record_ddg_alias(ddg_address)
|
| 355 |
|
| 356 |
if not self.cf_inbox_jwt:
|
| 357 |
raise RuntimeError("DDGMail 需要 cf_inbox_jwt(DDG 转发目标的固定收件箱 JWT),请在邮箱配置中填写 CF Inbox JWT")
|
| 358 |
|
| 359 |
-
return {"provider": self.name, "provider_ref": self.provider_ref, "address": ddg_address, "token": self.cf_inbox_jwt}
|
| 360 |
|
| 361 |
def _parse_raw_recipient(self, raw_text: str) -> str:
|
| 362 |
if not raw_text:
|
|
@@ -777,7 +778,16 @@ class YydsMailProvider(BaseMailProvider):
|
|
| 777 |
|
| 778 |
|
| 779 |
def _entries(mail_config: dict) -> list[dict]:
|
| 780 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 781 |
|
| 782 |
|
| 783 |
def _enabled_entries(mail_config: dict) -> list[dict]:
|
|
|
|
| 289 |
|
| 290 |
def __init__(self, entry: dict, conf: dict):
|
| 291 |
super().__init__(conf, str(entry.get("provider_ref") or ""))
|
| 292 |
+
self.label = str(entry.get("label") or self.provider_ref)
|
| 293 |
self.ddg_token = str(entry["ddg_token"]).strip()
|
| 294 |
self.cf_api_base = str(entry.get("api_base") or entry.get("cf_api_base") or "").rstrip("/")
|
| 295 |
self.cf_inbox_jwt = str(entry.get("cf_inbox_jwt") or "").strip()
|
|
|
|
| 350 |
ddg_address = f"{ddg_address_part}@duck.com"
|
| 351 |
|
| 352 |
if _is_ddg_alias_duplicate(ddg_address):
|
| 353 |
+
raise RuntimeError(f"[{self.label}] DDG日上限已达,别名 {ddg_address} 已存在,自动切换邮箱提供商")
|
| 354 |
|
| 355 |
_record_ddg_alias(ddg_address)
|
| 356 |
|
| 357 |
if not self.cf_inbox_jwt:
|
| 358 |
raise RuntimeError("DDGMail 需要 cf_inbox_jwt(DDG 转发目标的固定收件箱 JWT),请在邮箱配置中填写 CF Inbox JWT")
|
| 359 |
|
| 360 |
+
return {"provider": self.name, "provider_ref": self.provider_ref, "address": ddg_address, "token": self.cf_inbox_jwt, "label": self.label}
|
| 361 |
|
| 362 |
def _parse_raw_recipient(self, raw_text: str) -> str:
|
| 363 |
if not raw_text:
|
|
|
|
| 778 |
|
| 779 |
|
| 780 |
def _entries(mail_config: dict) -> list[dict]:
|
| 781 |
+
result: list[dict] = []
|
| 782 |
+
counters: dict[str, int] = {}
|
| 783 |
+
for item in mail_config["providers"]:
|
| 784 |
+
idx = len(result) + 1
|
| 785 |
+
t = item.get("type", "")
|
| 786 |
+
cnt = counters.get(t, 0) + 1
|
| 787 |
+
counters[t] = cnt
|
| 788 |
+
label = f"DDG-{cnt}" if t == "ddg_mail" else f"{t}#{idx}"
|
| 789 |
+
result.append({**item, "provider_ref": f"{item['type']}#{idx}", "label": label})
|
| 790 |
+
return result
|
| 791 |
|
| 792 |
|
| 793 |
def _enabled_entries(mail_config: dict) -> list[dict]:
|
services/register/openai_register.py
CHANGED
|
@@ -690,7 +690,8 @@ class PlatformRegistrar:
|
|
| 690 |
email = str(mailbox.get("address") or "").strip()
|
| 691 |
if not email:
|
| 692 |
raise RuntimeError("邮箱服务未返回 address")
|
| 693 |
-
|
|
|
|
| 694 |
password = _random_password()
|
| 695 |
first_name, last_name = _random_name()
|
| 696 |
self._platform_authorize(email, index)
|
|
|
|
| 690 |
email = str(mailbox.get("address") or "").strip()
|
| 691 |
if not email:
|
| 692 |
raise RuntimeError("邮箱服务未返回 address")
|
| 693 |
+
label = str(mailbox.get("label") or "")
|
| 694 |
+
step(index, f"邮箱创建完成[{label}]: {email}")
|
| 695 |
password = _random_password()
|
| 696 |
first_name, last_name = _random_name()
|
| 697 |
self._platform_authorize(email, index)
|