diff --git a/src/mail/mail_reader.py b/src/mail/mail_reader.py index ea6619f..4809e26 100644 --- a/src/mail/mail_reader.py +++ b/src/mail/mail_reader.py @@ -35,7 +35,7 @@ class MailReader(): l = i.decode().split(' "/" ') print(l[0] + " = " + l[1]) - def read_emails(self) -> list: + def read_emails(self, mails_messages: list) -> list: # create an IMAP4 class with SSL if DOMAIN_163 in self.login: imap = imaplib.IMAP4_SSL(IMAP_SERVER_163) @@ -59,6 +59,7 @@ class MailReader(): # close the connection and logout imap.close() imap.logout() + mails_messages.extend(mail_list) return mail_list def _get_messages_from_folder(self, imap, folder="INBOX") -> list: @@ -139,28 +140,32 @@ def need_to_valid_url(url: str, successful_items) -> bool: def read_mails(): # get email address mail_list = MONGO_STORE_MANAGER.get_destination_emails() - # mail_address1 = MailAddress(mail="appointment2022@aol.com", password="gyilpmvyyvlcaviq") - # mail_address2 = MailAddress(mail="chenpeijun@aol.com", password="ytifuwguknzifqyb") - # mail_address2 = MailAddress(mail="sdfgfhgf1986@aol.com", password="fjwcgvhxxlywqfwm") - # mail_address3 = MailAddress(mail="ciyuexie@aol.com", password="czezlmmyypokdfce") - # mail_address4 = MailAddress(mail="hongjiang176@aol.com", password="ftzpscgzvwneelmn") + # # mail_address1 = MailAddress(mail="appointment2022@aol.com", password="gyilpmvyyvlcaviq") + # # mail_address2 = MailAddress(mail="chenpeijun@aol.com", password="ytifuwguknzifqyb") + # # mail_address2 = MailAddress(mail="sdfgfhgf1986@aol.com", password="fjwcgvhxxlywqfwm") + # # mail_address3 = MailAddress(mail="ciyuexie@aol.com", password="czezlmmyypokdfce") + # # mail_address4 = MailAddress(mail="hongjiang176@aol.com", password="ftzpscgzvwneelmn") + # mail_address4 = MailAddress(mail="ribka_puchkova@aol.com", password="aqvsozoyifbixtdc") # mail_list = [mail_address3, mail_address2, mail_address1, mail_address4] - # mail_list = [mail_address1] + # mail_list = [mail_address4] successful_items = MONGO_STORE_MANAGER.get_all_successful_items_for_day() - for mail in mail_list: - mail_reader = MailReader(mail.mail, mail.password) - mail_info_list = mail_reader.read_emails() - with ThreadPoolExecutor(max_workers=10) as executor: - for mail in mail_info_list: - match = re.search(VALIDATION_URL_REGEX, mail.body) - if match: - url = match.group(0) - if need_to_valid_url(url, successful_items): - url_validator = LinkValidator(url) - print("need to validate url: " + url) - executor.submit(url_validator.start_page, params.get_proxy(ProxyType.BRIGHT_DATA), True) - else: - print("do not need to click url --> {}".format(mail)) + mails_messages = [] + with ThreadPoolExecutor(max_workers=20) as executor: + for mail in mail_list: + mail_reader = MailReader(mail.mail, mail.password) + executor.submit(mail_reader.read_emails, mails_messages) + + with ThreadPoolExecutor(max_workers=10) as executor: + for mail in mails_messages: + match = re.search(VALIDATION_URL_REGEX, mail.body) + if match: + url = match.group(0) + if need_to_valid_url(url, successful_items): + url_validator = LinkValidator(url) + print("need to validate url: " + url) + executor.submit(url_validator.start_page, params.get_proxy(ProxyType.BRIGHT_DATA), True) + else: + print("do not need to click url --> {}".format(mail)) # check whether the url has already been clicked