""" mail/ ===== Package de lecture IMAP pour le bot appointment_request. Architecture (du plus bas au plus haut niveau) : imap_proxy_reader — bibliothèque de bas niveau, sans dépendances internes ProxyConfig dataclass de configuration proxy (SOCKS5/SOCKS4/HTTP) ProxyIMAPClient IMAPClient passant par un proxy get_imap_server(login) résolution domaine → serveur IMAP extract_body(msg) extraction HTML/texte d'un email send_imap_id(imap) spoofing fingerprint client (RFC 2971) VALIDATION_URL_* constantes Hermes (source de vérité) IMAP_SERVER_MAP table domaine → serveur mail_constants IMAPClient avec fingerprint + fabrique create_imap() FingerprintIMAPClient IMAPClient auto-ID après login create_imap(login) fabrique → FingerprintIMAPClient sur le bon serveur show_folders(imap) liste des dossiers (IMAPClient ou imaplib) mail_reader_all_contacts logique métier de haut niveau MailReader lit les emails d'un compte (direct ou proxy) find_links_to_validate_from_mail_list() point d'entrée principal """ from mail.imap_proxy_reader import ( ProxyConfig, ProxyIMAPClient, get_imap_server, extract_body, send_imap_id, VALIDATION_URL_SUBJECT_FR, VALIDATION_URL_SUBJECT_EN, VALIDATION_URL_REGEX, IMAP_SERVER_MAP, ) from mail.mail_constants import ( FingerprintIMAPClient, create_imap, show_folders, ) from mail.mail_reader_all_contacts import ( MailReader, find_links_to_validate_from_mail_list, ) __all__ = [ # imap_proxy_reader "ProxyConfig", "ProxyIMAPClient", "get_imap_server", "extract_body", "send_imap_id", "VALIDATION_URL_SUBJECT_FR", "VALIDATION_URL_SUBJECT_EN", "VALIDATION_URL_REGEX", "IMAP_SERVER_MAP", # mail_constants "FingerprintIMAPClient", "create_imap", "show_folders", # mail_reader_all_contacts "MailReader", "find_links_to_validate_from_mail_list", ]