优化了 gui

This commit is contained in:
yml2213
2026-06-21 23:38:52 +08:00
parent af3951ec6f
commit 220fcd4052
4 changed files with 125 additions and 20 deletions
+5 -2
View File
@@ -5,6 +5,8 @@ from pathlib import Path
from dataclasses import dataclass
from typing import List, Optional
from .email_verifier import get_email_config_for_account
@dataclass
class Account:
@@ -45,13 +47,14 @@ class Config:
"""获取账号列表"""
accounts = []
for acc in self._config.get('accounts', []):
email_config = get_email_config_for_account(acc['email'])
accounts.append(Account(
username=acc['username'],
password=acc['password'],
email=acc['email'],
email_password=acc['email_password'],
email_imap_server=acc.get('email_imap_server', ''),
email_imap_port=acc.get('email_imap_port', 993),
email_imap_server=acc.get('email_imap_server') or email_config['server'],
email_imap_port=acc.get('email_imap_port') or email_config['port'],
))
return accounts
+13
View File
@@ -40,6 +40,7 @@ class EmailVerifier:
"""连接IMAP服务器"""
try:
logger.info(f"连接IMAP服务器: {self.imap_server}:{self.imap_port}")
self._validate_login_text()
self._connection = imaplib.IMAP4_SSL(
self.imap_server,
self.imap_port,
@@ -51,6 +52,17 @@ class EmailVerifier:
logger.error(f"IMAP连接失败: {e}")
raise
def _validate_login_text(self) -> None:
"""提前检查IMAP登录字段,给出比ascii编码异常更明确的提示。"""
for label, value in (("邮箱账号", self.username), ("邮箱密码/授权码", self.password)):
try:
value.encode("ascii")
except UnicodeEncodeError as exc:
raise ValueError(
f"{label}包含中文或其他非ASCII字符,IMAP无法登录;"
"请检查导入格式是否为:用户名|密码|邮箱|邮箱密码"
) from exc
def disconnect(self) -> None:
"""断开IMAP连接"""
if self._connection:
@@ -324,6 +336,7 @@ class EmailVerifier:
def get_email_config_for_account(email_address: str) -> dict:
"""根据邮箱地址自动配置IMAP服务器"""
configs = {
'bdhg.xyz': {'server': 'mail.bdhg.xyz', 'port': 993},
'qq.com': {'server': 'imap.qq.com', 'port': 993},
'163.com': {'server': 'imap.163.com', 'port': 993},
'126.com': {'server': 'imap.126.com', 'port': 993},