修复IMAP连接:支持非SSL端口143
- IMAP服务器 111.229.206.54 只开放143端口(非SSL),993不通 - 默认配置改为端口143、ssl=False - EmailVerifier 增加 use_ssl 参数,支持 IMAP4 和 IMAP4_SSL - Account 模型增加 email_imap_ssl 字段 - 数据库迁移:新增列 + 修正旧数据端口和SSL设置 - 导入账号时自动填充 ssl 配置 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
2b8716cf72
commit
52102655ac
@@ -25,6 +25,7 @@ class EmailVerifier:
|
||||
mailbox: str = "INBOX",
|
||||
lookback_minutes: int = 10,
|
||||
max_messages: int = 20,
|
||||
use_ssl: bool = True,
|
||||
):
|
||||
self.imap_server = imap_server
|
||||
self.imap_port = imap_port
|
||||
@@ -34,18 +35,26 @@ class EmailVerifier:
|
||||
self.mailbox = mailbox
|
||||
self.lookback_minutes = lookback_minutes
|
||||
self.max_messages = max_messages
|
||||
self.use_ssl = use_ssl
|
||||
self._connection: Optional[imaplib.IMAP4_SSL] = None
|
||||
|
||||
def connect(self) -> None:
|
||||
"""连接IMAP服务器"""
|
||||
try:
|
||||
logger.info(f"连接IMAP服务器: {self.imap_server}:{self.imap_port}")
|
||||
logger.info(f"连接IMAP服务器: {self.imap_server}:{self.imap_port} (SSL={self.use_ssl})")
|
||||
self._validate_login_text()
|
||||
self._connection = imaplib.IMAP4_SSL(
|
||||
self.imap_server,
|
||||
self.imap_port,
|
||||
timeout=self.timeout,
|
||||
)
|
||||
if self.use_ssl:
|
||||
self._connection = imaplib.IMAP4_SSL(
|
||||
self.imap_server,
|
||||
self.imap_port,
|
||||
timeout=self.timeout,
|
||||
)
|
||||
else:
|
||||
self._connection = imaplib.IMAP4(
|
||||
self.imap_server,
|
||||
self.imap_port,
|
||||
timeout=self.timeout,
|
||||
)
|
||||
self._connection.login(self.username, self.password)
|
||||
logger.info("IMAP连接成功")
|
||||
except Exception as e:
|
||||
@@ -336,13 +345,13 @@ class EmailVerifier:
|
||||
def get_email_config_for_account(email_address: str) -> dict:
|
||||
"""根据邮箱地址自动配置IMAP服务器,默认使用统一IMAP代理"""
|
||||
configs = {
|
||||
'qq.com': {'server': 'imap.qq.com', 'port': 993},
|
||||
'163.com': {'server': 'imap.163.com', 'port': 993},
|
||||
'126.com': {'server': 'imap.126.com', 'port': 993},
|
||||
'gmail.com': {'server': 'imap.gmail.com', 'port': 993},
|
||||
'outlook.com': {'server': 'outlook.office365.com', 'port': 993},
|
||||
'hotmail.com': {'server': 'outlook.office365.com', 'port': 993},
|
||||
'qq.com': {'server': 'imap.qq.com', 'port': 993, 'ssl': True},
|
||||
'163.com': {'server': 'imap.163.com', 'port': 993, 'ssl': True},
|
||||
'126.com': {'server': 'imap.126.com', 'port': 993, 'ssl': True},
|
||||
'gmail.com': {'server': 'imap.gmail.com', 'port': 993, 'ssl': True},
|
||||
'outlook.com': {'server': 'outlook.office365.com', 'port': 993, 'ssl': True},
|
||||
'hotmail.com': {'server': 'outlook.office365.com', 'port': 993, 'ssl': True},
|
||||
}
|
||||
|
||||
domain = email_address.split('@')[-1].lower()
|
||||
return configs.get(domain, {'server': '111.229.206.54', 'port': 993})
|
||||
return configs.get(domain, {'server': '111.229.206.54', 'port': 143, 'ssl': False})
|
||||
|
||||
Reference in New Issue
Block a user