From 9475d8d542db77e279a6d5865e2644673a653110 Mon Sep 17 00:00:00 2001 From: PAN Lei Date: Fri, 24 Apr 2026 16:57:17 +0200 Subject: [PATCH] use proxy for yahoo mails too --- read_confirmation_emails.py | 3 --- src/mail/mail_confirmation.py | 7 ++++-- src/mail/mail_constants.py | 6 +++-- src/mail/mail_reader.py | 23 ++++++++++++++++--- .../contacts/generate_random_passport_id.py | 2 +- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/read_confirmation_emails.py b/read_confirmation_emails.py index f11892c..e66598a 100755 --- a/read_confirmation_emails.py +++ b/read_confirmation_emails.py @@ -16,9 +16,6 @@ def main(): # initialize discord print("init discord done") _accepted_appointments = read_mails_and_find_confirmation_contacts(mode='default') - # for item in _accepted_appointments: - # send_message(create_message_from_item(item)) - if __name__ == '__main__': main() diff --git a/src/mail/mail_confirmation.py b/src/mail/mail_confirmation.py index f6e6820..6e32b28 100755 --- a/src/mail/mail_confirmation.py +++ b/src/mail/mail_confirmation.py @@ -12,8 +12,8 @@ from imapclient import IMAPClient from src.db.mirgration.migration_tools import migre_accepted_appointment from src.db.mongo_manager import MONGO_STORE_MANAGER from src.mail.imap_proxy_reader import ProxyMailReader, MailAccount, ProxyConfig -from src.mail.mail_constants import create_imap, show_folders, is_gmx_address -from src.mail.mail_reader import get_gmx_proxy_config +from src.mail.mail_constants import create_imap, show_folders, is_gmx_address, is_yahoo_address +from src.mail.mail_reader import get_gmx_proxy_config, get_yahoo_proxy_config from src.notification.AcceptedResultPojo import get_accepted_result_from from src.notification.mailer import Mailer from src.pojo.ResultEnum import ResultEnum @@ -213,11 +213,14 @@ def find_confirmation_contacts_for_today(mode: str = 'default'): def find_confirmation_contacts_mail_list(mail_list, subjects: list = None): mails_messages = [] gmx_proxy_config = get_gmx_proxy_config() + yahoo_proxy_config = get_yahoo_proxy_config() # read all the emails with ThreadPoolExecutor(max_workers=200) as executor: for mail in mail_list: if is_gmx_address(mail.mail) and gmx_proxy_config is not None: executor.submit(read_gmx_proxy_confirmation_emails, mail, mails_messages, gmx_proxy_config, subjects) + elif is_yahoo_address(mail.mail) and yahoo_proxy_config is not None: + executor.submit(read_gmx_proxy_confirmation_emails, mail, mails_messages, yahoo_proxy_config, subjects) else: mail_reader = MailConfirmationReader(mail.mail, mail.password) executor.submit(mail_reader.read_emails, mails_messages) diff --git a/src/mail/mail_constants.py b/src/mail/mail_constants.py index f2342d4..be57423 100755 --- a/src/mail/mail_constants.py +++ b/src/mail/mail_constants.py @@ -1,5 +1,3 @@ -import imaplib - from imapclient import IMAPClient DOMAIN_YAHOO = "yahoo.com" @@ -44,6 +42,10 @@ def is_gmx_address(login: str) -> bool: return any(domain in login for domain in GMX_DOMAINS) +def is_yahoo_address(login: str) -> bool: + return DOMAIN_YAHOO in login + + DOMAIN_PISS_MAIL = "pissmail.com" DOMAIN_INCEL_EMAIL = "incel.email" DOMAIN_SHITPOSTING_EXPERT = "shitposting.expert" diff --git a/src/mail/mail_reader.py b/src/mail/mail_reader.py index eac63b8..70de01d 100755 --- a/src/mail/mail_reader.py +++ b/src/mail/mail_reader.py @@ -1,20 +1,20 @@ import datetime import email -import re import os -from typing import Optional +import re from builtins import list from concurrent.futures import ThreadPoolExecutor from datetime import time from email.header import decode_header from email.message import Message +from typing import Optional from imapclient import IMAPClient from src.db.mongo_manager import MONGO_STORE_MANAGER from src.logs.AppLogging import init_logger -from src.mail.mail_constants import create_imap, show_folders, is_gmx_address from src.mail.imap_proxy_reader import ProxyMailReader, ProxyConfig, MailAccount +from src.mail.mail_constants import create_imap, show_folders, is_gmx_address from src.pojo.mail.mail_pojo import MailPojo from src.utils.timeutiles import is_time_between @@ -71,6 +71,23 @@ def get_gmx_proxy_config() -> Optional[ProxyConfig]: ) +def get_yahoo_proxy_config() -> Optional[ProxyConfig]: + host = os.environ.get("YAHOO_PROXY_HOST", "") + if not host: + return None + try: + port = int(os.environ.get("YAHOO_PROXY_PORT", "443")) + except ValueError: + port = 443 + return ProxyConfig( + host=host, + port=port, + proxy_type=os.environ.get("YAHOO_PROXY_TYPE", "SOCKS5"), + username=os.environ.get("YAHOO_PROXY_USERNAME"), + password=os.environ.get("YAHOO_PROXY_PASSWORD"), + ) + + def read_gmx_proxy_emails(mail, mails_messages: list, proxy_config: ProxyConfig) -> None: account = MailAccount(login=mail.mail, password=mail.password) results = ProxyMailReader(account, proxy_config).read(since=datetime.datetime.today()) diff --git a/src/utils/contacts/generate_random_passport_id.py b/src/utils/contacts/generate_random_passport_id.py index 2ef2376..c702ab5 100755 --- a/src/utils/contacts/generate_random_passport_id.py +++ b/src/utils/contacts/generate_random_passport_id.py @@ -32,7 +32,7 @@ def get_random_number(size=7) -> str: return ran def generate_single_titre_sejour_number() -> str: - id_number = prefix_tire_de_sejour + get_random_number() + id_number = prefix_tire_de_sejour + get_random_number(size=8) return id_number def generate_titre_sejour_number(size=10) -> list: