add timeout for reading mails

This commit is contained in:
2026-04-04 11:28:49 +02:00
parent 1fa29ebd37
commit c84266f8fd
2 changed files with 20 additions and 9 deletions
+14 -8
View File
@@ -31,6 +31,10 @@ EMAIL_ADDRESS_REGEX = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b'
# 日期格式
DATE_FORMAT = "%d-%b-%Y"
# Timeouts GMX (en secondes)
IMAP_SOCKET_TIMEOUT = 300 # timeout socket pour chaque opération IMAP
FUTURE_TIMEOUT = 600 # durée max allouée à la lecture d'une boîte mail
# GMX域名列表(用于判断是否需要使用代理)
GMX_DOMAINS = (
"gmx.com", "gmx.net", "gmx.de", "gmx.at",
@@ -134,6 +138,7 @@ class MailReader:
proxy=self.proxy,
use_uid=True,
ssl=True,
timeout=IMAP_SOCKET_TIMEOUT,
)
return self._read_emails_internal(imap, mails_messages)
except Exception as exc:
@@ -394,10 +399,6 @@ def need_to_check_email(mail: str, successful_items) -> bool:
"""判断是否需要检查邮件"""
print("successful_items size is " + str(len(successful_items)))
# 特殊处理
if mail == "saigecong1990@pissmail.com":
return True
# 过滤已验证的项目
filtered_items = [item for item in successful_items if item.email == mail]
@@ -439,9 +440,11 @@ def find_links_to_validate_from_mail_list(
# 等待所有任务完成
for future in futures:
try:
future.result()
future.result(timeout=FUTURE_TIMEOUT)
except TimeoutError:
print("⏱️ Timeout ({} s) dépassé pour une boîte mail — lecture ignorée.".format(FUTURE_TIMEOUT))
except Exception as e:
print("Error processing mail: {}".format(e))
print("Error processing mail: {},login: {}, password: {}".format(e,mail.mail, mail.password))
# ── Résumé des comptes GMX en échec ──────────────────────
if failed_gmx:
@@ -484,7 +487,10 @@ def find_links_to_validate_from_mail_list(
if __name__ == '__main__':
# 读取联系人列表
contact_to_book_list = read_contacts(
file_name="~/Desktop/contact_list_2026-03-05.xlsx")
file_name="~/Desktop/contact_list_inbox_lv_100.xlsx")
# file_name="~/Desktop/contact_list_2026-04-02.xlsx")
# file_name="~/Desktop/contact_list_2026-04-01.xlsx")
# file_name="~/Desktop/contact_list_2026-03-28.xlsx")
# file_name="~/Desktop/contact_list_2025-11-28.xlsx")
# file_name="~/Desktop/contact_list_2025-11-06.xlsx")
@@ -512,7 +518,7 @@ if __name__ == '__main__':
_to_add = False
if _to_add:
filter_mail.append(mail_pojo)
# filter_mail = [MailAddress("birgitnaya@gmx.net", "XEeUF3Y1yaO")]
# filter_mail = [MailAddress("munozshawn1992@aol.com", "leivqvcwyacrgbzp")]
# ── Mode de lecture : GMX_ONLY=true → uniquement les comptes GMX ──
gmx_only = os.environ.get("GMX_ONLY", "false").strip().lower() == "true"