lijunke
deploy: clean start with hf metadata
18081cf
from typing import Callable, Optional
from core.config import config
from core.proxy_utils import extract_host, no_proxy_matches, parse_proxy_setting
from core.cfmail_client import CloudflareMailClient
from core.duckmail_client import DuckMailClient
from core.freemail_client import FreemailClient
from core.gptmail_client import GPTMailClient
from core.moemail_client import MoemailClient
def create_temp_mail_client(
provider: str,
*,
domain: Optional[str] = None,
proxy: Optional[str] = None,
log_cb: Optional[Callable[[str, str], None]] = None,
base_url: Optional[str] = None,
api_key: Optional[str] = None,
jwt_token: Optional[str] = None,
verify_ssl: Optional[bool] = None,
):
"""
创建临时邮箱客户端
参数优先级:传入参数 > 全局配置
"""
provider = (provider or "duckmail").lower()
if proxy is None:
proxy_source = config.basic.proxy_for_auth if config.basic.mail_proxy_enabled else ""
else:
proxy_source = proxy
proxy, no_proxy = parse_proxy_setting(proxy_source)
if provider == "moemail":
effective_base_url = base_url or config.basic.moemail_base_url
if no_proxy_matches(extract_host(effective_base_url), no_proxy):
proxy = ""
return MoemailClient(
base_url=effective_base_url,
proxy=proxy,
api_key=api_key or config.basic.moemail_api_key,
domain=domain or config.basic.moemail_domain,
log_callback=log_cb,
)
if provider == "freemail":
effective_base_url = base_url or config.basic.freemail_base_url
if no_proxy_matches(extract_host(effective_base_url), no_proxy):
proxy = ""
return FreemailClient(
base_url=effective_base_url,
jwt_token=jwt_token or config.basic.freemail_jwt_token,
proxy=proxy,
verify_ssl=verify_ssl if verify_ssl is not None else config.basic.freemail_verify_ssl,
log_callback=log_cb,
)
if provider == "gptmail":
effective_base_url = base_url or config.basic.gptmail_base_url
if no_proxy_matches(extract_host(effective_base_url), no_proxy):
proxy = ""
return GPTMailClient(
base_url=effective_base_url,
api_key=api_key or config.basic.gptmail_api_key,
proxy=proxy,
verify_ssl=verify_ssl if verify_ssl is not None else config.basic.gptmail_verify_ssl,
domain=domain or config.basic.gptmail_domain,
log_callback=log_cb,
)
if provider == "cfmail":
effective_base_url = base_url or config.basic.cfmail_base_url
if no_proxy_matches(extract_host(effective_base_url), no_proxy):
proxy = ""
return CloudflareMailClient(
base_url=effective_base_url,
proxy=proxy,
api_key=api_key or config.basic.cfmail_api_key,
domain=domain or config.basic.cfmail_domain,
verify_ssl=verify_ssl if verify_ssl is not None else config.basic.cfmail_verify_ssl,
log_callback=log_cb,
)
effective_base_url = base_url or config.basic.duckmail_base_url
if no_proxy_matches(extract_host(effective_base_url), no_proxy):
proxy = ""
return DuckMailClient(
base_url=effective_base_url,
proxy=proxy,
verify_ssl=verify_ssl if verify_ssl is not None else config.basic.duckmail_verify_ssl,
api_key=api_key or config.basic.duckmail_api_key,
log_callback=log_cb,
)