can read confirmation email from onet.pl

This commit is contained in:
2023-04-07 20:38:09 +02:00
parent f2fc7ee1be
commit 8454e6f2e8
+9 -9
View File
@@ -13,7 +13,7 @@ from src.mail.mail_constants import DOMAIN_HOTMAIL, create_imap, show_folders
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
from src.pojo.mail.mail_pojo import MailPojo from src.pojo.mail.mail_pojo import MailPojo, MailAddress
CONFIRMATION_SUBJECT_FR = 'Votre rendez-vous est' CONFIRMATION_SUBJECT_FR = 'Votre rendez-vous est'
CONFIRMATION_SUBJECT_EN = 'appointment is confirmed' CONFIRMATION_SUBJECT_EN = 'appointment is confirmed'
@@ -41,20 +41,19 @@ class MailConfirmationReader():
mail_list = [] mail_list = []
print("read mails from {}".format(self.login)) print("read mails from {}".format(self.login))
if isImapClient: if isImapClient:
mail_list.extend(self._get_messages_from_folder_for_imapclient(imap, CONFIRMATION_SUBJECT_FR)) mail_list.extend(self._get_messages_from_folder_for_imapclient(imap))
mail_list.extend(self._get_messages_from_folder_for_imapclient(imap, CONFIRMATION_SUBJECT_EN))
else: else:
folderList = show_folders(imap) folderList = show_folders(imap)
for folder in folderList: for folder in folderList:
mail_list.extend(self._get_messages_from_folder(imap, CONFIRMATION_SUBJECT_FR, folder=folder)) mail_list.extend(self._get_messages_from_folder(imap, CONFIRMATION_SUBJECT_FR, folder=folder))
mail_list.extend(self._get_messages_from_folder(imap, CONFIRMATION_SUBJECT_EN, folder=folder)) mail_list.extend(self._get_messages_from_folder(imap, CONFIRMATION_SUBJECT_EN, folder=folder))
if isImapClient: if not isImapClient:
imap.close() imap.close()
imap.logout() imap.logout()
mails_messages.extend(mail_list) mails_messages.extend(mail_list)
return mail_list return mail_list
def _get_messages_from_folder_for_imapclient(self, imap, subject, folder="INBOX") -> list: def _get_messages_from_folder_for_imapclient(self, imap, folder="INBOX") -> list:
mail_messages = [] mail_messages = []
search_terms = 'SINCE "{}"'.format( search_terms = 'SINCE "{}"'.format(
datetime.datetime.today().strftime( datetime.datetime.today().strftime(
@@ -74,12 +73,13 @@ class MailConfirmationReader():
for part in email_message.walk(): for part in email_message.walk():
print(part.get_content_type()) print(part.get_content_type())
if part.get_content_type() == "text/html": if part.get_content_type() == "text/html":
body = body + part.get_payload() body = body + str(part.get_payload(decode=True).decode("utf-8"))
elif part.get_content_type() == "text/plain": elif part.get_content_type() == "text/plain":
body = body + part.get_payload() body = body + part.get_payload()
if CONFIRMATION_SUBJECT_FR in subject or CONFIRMATION_SUBJECT_EN in subject: if CONFIRMATION_SUBJECT_FR in subject or CONFIRMATION_SUBJECT_EN in subject:
mail = MailPojo(subject=subject, body=body, from_address=from_address) mail = MailPojo(subject=subject, body=body, from_address=from_address)
mail.isImapClient = True mail.isImapClient = True
print("subject is {}".format(subject))
print("body is {}".format(body)) print("body is {}".format(body))
mail_messages.append(mail) mail_messages.append(mail)
except Exception as error: except Exception as error:
@@ -146,7 +146,7 @@ def accept_appointment_found(accepted_result_list: list):
mailer = Mailer() mailer = Mailer()
print(accepted_result_list) print(accepted_result_list)
for reserve in accepted_result_list: for reserve in accepted_result_list:
mailer.send_email(get_accepted_result_from(reserve, MONGO_STORE_MANAGER), to_all=False) mailer.send_email(get_accepted_result_from(reserve, MONGO_STORE_MANAGER), to_all=True)
MONGO_STORE_MANAGER.update_reserve_result(reserve.id, ResultEnum.ACCEPTED, reserve.message) MONGO_STORE_MANAGER.update_reserve_result(reserve.id, ResultEnum.ACCEPTED, reserve.message)
if len(accepted_result_list) > 0: if len(accepted_result_list) > 0:
@@ -155,11 +155,11 @@ def accept_appointment_found(accepted_result_list: list):
def read_mails_and_find_confirmation_contacts(): def read_mails_and_find_confirmation_contacts():
mail_list = MONGO_STORE_MANAGER.get_destination_emails() mail_list = MONGO_STORE_MANAGER.get_destination_emails()
# mail_address3 = MailAddress(mail="ciyuexie@aol.com", password="czezlmmyypokdfce") # mail_address3 = MailAddress(mail="taibenchragu1978@onet.pl", password="2J)kyfNgyOZ")
# mail_list = [mail_address3] # mail_list = [mail_address3]
mails_messages = [] mails_messages = []
# read all the emails # read all the emails
with ThreadPoolExecutor(max_workers=100) as executor: with ThreadPoolExecutor(max_workers=200) as executor:
for mail in mail_list: for mail in mail_list:
if DOMAIN_HOTMAIL not in mail.mail: if DOMAIN_HOTMAIL not in mail.mail:
mail_reader = MailConfirmationReader(mail.mail, mail.password) mail_reader = MailConfirmationReader(mail.mail, mail.password)