diff --git a/mail/mail_reader_all_contacts.py b/mail/mail_reader_all_contacts.py index c0a16a0..f9ac4fb 100644 --- a/mail/mail_reader_all_contacts.py +++ b/mail/mail_reader_all_contacts.py @@ -41,11 +41,19 @@ GMX_DOMAINS = ( "gmx.fr", "gmx.us", "gmx.sg", "gmx.ch", "gmx.pt", ) +# 需要通过代理读取的域名列表 +PROXY_DOMAINS = GMX_DOMAINS + ("inbox.lv",) + def is_gmx_account(login: str) -> bool: """判断邮箱是否属于GMX域名""" return any(d in login.lower() for d in GMX_DOMAINS) + +def is_proxy_account(login: str) -> bool: + """判断邮箱是否需要通过代理读取(GMX 或 inbox.lv)""" + return any(d in login.lower() for d in PROXY_DOMAINS) + # 邮箱列表(简化为常量) REDIRECTION_MAILS = "appointment2022@aol.com, chenpeijun@aol.com,hongjiang176@aol.com,ciyuexie@aol.com,rutger.62@aol.com,ciccidaniel@aol.com,armasgoodman@aol.com,wknd.gemerine@aol.com,rafmail1981@aol.com,tonovichivanenaki@aol.com,hetland.ari@aol.com,mateusiversen@aol.com,lacerdaraffaello@aol.com,anasida76@aol.com,liamolinari@aol.com,sen70zib@aol.com,mezeiderrick@aol.com,stanisl49avchic@aol.com,damcvrobaneuron@aol.com,suyzanna_fleona@aol.com,dxealing.dissa@aol.com,hogg.karen@aol.com,obocharovamarina@aol.com,buchholzjohann@aol.com,orn.cecchini@aol.com,percivaltorgersen@aol.com,candalgudrun@aol.com,filimonis.76@aol.com,bengann_100@aol.com,axelhanne@aol.com,tiffanylarochelle@aol.com,nicoleta.r@aol.com,eichenbaum.1963@aol.com,kotensasharev@aol.com,samognat32@aol.com,edem_headshot@aol.com,kozmakuzmich1960@aol.com,damonsvensson@aol.com,anders.riva@aol.com,caiminwei123@gmail.com,yulingguo086@gmail.com,yingxiaolu086@gmail.com,lijiazhen0035@gmail.com,fangp370@gmail.com,huangyayu10086@gmail.com,fuziyuan110@gmail.com,xinyingdu886@gmail.com,yasiaforever.1971@aol.com,lukaszfidalgo@aol.com,zaichi29@aol.com,prostotakitak.1974@aol.com,mo90nroe@aol.com,blonde.87@aol.com,dimidrol.1969@aol.com" @@ -114,8 +122,8 @@ class MailReader: def read_emails(self, mails_messages: List[MailPojo]) -> List[MailPojo]: """读取邮件""" - # ── GMX账户 → 使用代理连接(失败自动重试最多3次)── - if is_gmx_account(self.login) and self.proxy is not None: + # ── GMX / inbox.lv 账户 → 使用代理连接(失败自动重试最多3次)── + if is_proxy_account(self.login) and self.proxy is not None: return self._read_emails_with_proxy_retry(mails_messages) else: return self._read_emails_internal(create_imap(self.login), mails_messages) @@ -125,13 +133,13 @@ class MailReader: mails_messages: List[MailPojo], max_retries: int = 8, ) -> List[MailPojo]: - """通过 ProxyIMAPClient 读取 GMX 邮件,失败时最多重试 max_retries 次。""" + """通过 ProxyIMAPClient 读取邮件(GMX / inbox.lv),失败时最多重试 max_retries 次。""" imap_server = get_imap_server(self.login) last_error: Optional[Exception] = None for attempt in range(1, max_retries + 1): try: - print("[GMX-Proxy] {} → {} via {} (tentative {}/{})".format( + print("[Proxy] {} → {} via {} (tentative {}/{})".format( self.login, imap_server, self.proxy, attempt, max_retries)) imap = ProxyIMAPClient( host=imap_server, @@ -143,10 +151,10 @@ class MailReader: return self._read_emails_internal(imap, mails_messages) except Exception as exc: last_error = exc - print("[GMX-Proxy] Échec tentative {}/{} pour {} : {}".format( + print("[Proxy] Échec tentative {}/{} pour {} : {}".format( attempt, max_retries, self.login, exc)) - print("[GMX-Proxy] Toutes les tentatives ont échoué pour {} : {}".format( + print("[Proxy] Toutes les tentatives ont échoué pour {} : {}".format( self.login, last_error)) self.failed_gmx_list.append(self.login) return [] @@ -446,13 +454,13 @@ def find_links_to_validate_from_mail_list( except Exception as e: print("Error processing mail: {},login: {}, password: {}".format(e,mail.mail, mail.password)) - # ── Résumé des comptes GMX en échec ────────────────────── + # ── Résumé des comptes proxy en échec ────────────────────── if failed_gmx: - print("\n[GMX-Proxy] ⚠️ {} compte(s) GMX non lus :".format(len(failed_gmx))) + print("\n[Proxy] ⚠️ {} compte(s) non lus (GMX / inbox.lv) :".format(len(failed_gmx))) for addr in failed_gmx: print(" ✗ {}".format(addr)) else: - print("\n[GMX-Proxy] ✅ Tous les comptes GMX ont été lus avec succès.") + print("\n[Proxy] ✅ Tous les comptes GMX / inbox.lv ont été lus avec succès.") # 刷新成功的项目 _refreshed_successful_items = MONGO_STORE_MANAGER.get_all_successful_items_for_day() @@ -487,8 +495,8 @@ def find_links_to_validate_from_mail_list( if __name__ == '__main__': # 读取联系人列表 contact_to_book_list = read_contacts( - file_name="~/Desktop/contact_list_inbox_lv_100.xlsx") - # file_name="~/Desktop/contact_list_2026-04-02.xlsx") + # file_name="~/Desktop/contact_list_inbox_lv_100.xlsx") + file_name="~/Desktop/contact_list_2026-04-07.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") diff --git a/proxy_manager/proxy_manager.py b/proxy_manager/proxy_manager.py index 4f1b6b0..6bea250 100644 --- a/proxy_manager/proxy_manager.py +++ b/proxy_manager/proxy_manager.py @@ -93,7 +93,7 @@ class ProxyManager: return [FR_PROXY_RES_OXY, FR_PROXY_ASOCK_RES_2, FR_DATA_IMPULSE_RES, FR_ASOCKS_MOBILE_PROXY] def get_proxy_for_appointment_request(self) -> dict: - # return self.get_random_sticky_iproyal_proxy() + return self.get_random_sticky_iproyal_proxy() _chosen_proxy = random.choice(MOBILE_PROXY_LIST) if "oxylabs" in _chosen_proxy["http"]: self.logger.info("use oxylabs proxy")