优化了 gui
This commit is contained in:
+5
-2
@@ -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
|
||||
|
||||
|
||||
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user