use proxy for yahoo mails too

This commit is contained in:
2026-04-24 16:57:17 +02:00
parent dc25758bdf
commit 9475d8d542
5 changed files with 30 additions and 11 deletions
-3
View File
@@ -16,9 +16,6 @@ def main():
# initialize discord # initialize discord
print("init discord done") print("init discord done")
_accepted_appointments = read_mails_and_find_confirmation_contacts(mode='default') _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__': if __name__ == '__main__':
main() main()
+5 -2
View File
@@ -12,8 +12,8 @@ from imapclient import IMAPClient
from src.db.mirgration.migration_tools import migre_accepted_appointment from src.db.mirgration.migration_tools import migre_accepted_appointment
from src.db.mongo_manager import MONGO_STORE_MANAGER from src.db.mongo_manager import MONGO_STORE_MANAGER
from src.mail.imap_proxy_reader import ProxyMailReader, MailAccount, ProxyConfig 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_constants import create_imap, show_folders, is_gmx_address, is_yahoo_address
from src.mail.mail_reader import get_gmx_proxy_config 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.AcceptedResultPojo import get_accepted_result_from
from src.notification.mailer import Mailer from src.notification.mailer import Mailer
from src.pojo.ResultEnum import ResultEnum 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): def find_confirmation_contacts_mail_list(mail_list, subjects: list = None):
mails_messages = [] mails_messages = []
gmx_proxy_config = get_gmx_proxy_config() gmx_proxy_config = get_gmx_proxy_config()
yahoo_proxy_config = get_yahoo_proxy_config()
# read all the emails # read all the emails
with ThreadPoolExecutor(max_workers=200) as executor: with ThreadPoolExecutor(max_workers=200) as executor:
for mail in mail_list: for mail in mail_list:
if is_gmx_address(mail.mail) and gmx_proxy_config is not None: 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) 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: else:
mail_reader = MailConfirmationReader(mail.mail, mail.password) mail_reader = MailConfirmationReader(mail.mail, mail.password)
executor.submit(mail_reader.read_emails, mails_messages) executor.submit(mail_reader.read_emails, mails_messages)
+4 -2
View File
@@ -1,5 +1,3 @@
import imaplib
from imapclient import IMAPClient from imapclient import IMAPClient
DOMAIN_YAHOO = "yahoo.com" 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) 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_PISS_MAIL = "pissmail.com"
DOMAIN_INCEL_EMAIL = "incel.email" DOMAIN_INCEL_EMAIL = "incel.email"
DOMAIN_SHITPOSTING_EXPERT = "shitposting.expert" DOMAIN_SHITPOSTING_EXPERT = "shitposting.expert"
+20 -3
View File
@@ -1,20 +1,20 @@
import datetime import datetime
import email import email
import re
import os import os
from typing import Optional import re
from builtins import list from builtins import list
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from datetime import time from datetime import time
from email.header import decode_header from email.header import decode_header
from email.message import Message from email.message import Message
from typing import Optional
from imapclient import IMAPClient from imapclient import IMAPClient
from src.db.mongo_manager import MONGO_STORE_MANAGER from src.db.mongo_manager import MONGO_STORE_MANAGER
from src.logs.AppLogging import init_logger 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.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.pojo.mail.mail_pojo import MailPojo
from src.utils.timeutiles import is_time_between 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: def read_gmx_proxy_emails(mail, mails_messages: list, proxy_config: ProxyConfig) -> None:
account = MailAccount(login=mail.mail, password=mail.password) account = MailAccount(login=mail.mail, password=mail.password)
results = ProxyMailReader(account, proxy_config).read(since=datetime.datetime.today()) results = ProxyMailReader(account, proxy_config).read(since=datetime.datetime.today())
@@ -32,7 +32,7 @@ def get_random_number(size=7) -> str:
return ran return ran
def generate_single_titre_sejour_number() -> str: 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 return id_number
def generate_titre_sejour_number(size=10) -> list: def generate_titre_sejour_number(size=10) -> list: