diff --git a/classes/mail_wrapper.py b/classes/mail_wrapper.py index 2acad88..ee7a600 100644 --- a/classes/mail_wrapper.py +++ b/classes/mail_wrapper.py @@ -25,6 +25,5 @@ def get_sender(self): def get_subject(self): subject = SubjectParser(self.mail['subject']) - print(subject.text) return subject.text diff --git a/classes/types.py b/classes/types.py index 17f03ab..1f3268f 100644 --- a/classes/types.py +++ b/classes/types.py @@ -3,3 +3,7 @@ class ComponentDatasheet(NamedTuple): name: str link: str + +class MailSenderSubject(NamedTuple): + sender: str + subject: str \ No newline at end of file diff --git a/mail.py b/mail.py index a59e8c2..e1b53d3 100644 --- a/mail.py +++ b/mail.py @@ -3,6 +3,7 @@ from classes.mail_wrapper import MailWrapper from classes.imap import ImapGmailWrapper +from classes.types import MailSenderSubject from config import mail, app_password, url_telegram, chat_id @@ -10,41 +11,38 @@ def check_gmail(): imap = ImapGmailWrapper(mail, app_password) imap.select_mail_box('inbox') - possible_new_email_id = int(imap.get_last_email_id('UNSEEN')) + new_email_id = int(imap.get_last_email_id('UNSEEN')) if not os.path.exists('recent_mail.txt'): - save_latest_email_id(possible_new_email_id) + save_latest_email_id(new_email_id) return file_reader = open('recent_mail.txt', 'r') if file_reader.readable(): current_mail_id = int(file_reader.read()) + file_reader.close() - if possible_new_email_id > current_mail_id: - latest_email_id = possible_new_email_id - number_of_new_mails = latest_email_id - current_mail_id + if new_email_id > current_mail_id: + save_latest_email_id(new_email_id) - file_reader.close() + senders_subjects = [] + message = 'Shalom Adonai, irmãos. Novo(s) e-mail(s), deem uma olhada:\n' - save_latest_email_id(latest_email_id) + for mail_id in range(current_mail_id + 1, new_email_id + 1): + raw_email = imap.fetchs([mail_id]) - raw_email = imap.fetchs([latest_email_id]) + mail_parser = MailWrapper(raw_email) - mail_parser = MailWrapper(raw_email) - sender = mail_parser.get_sender() + senders_subjects.append(MailSenderSubject(mail_parser.get_sender(), mail_parser.get_subject())) - subject = mail_parser.get_subject() - - if number_of_new_mails > 1: - message = 'Shalom Adonai, irmãos. {} novos emails, deem uma olhada.'.format(number_of_new_mails) - else: - message = 'Shalom Adonai, irmãos. Novo email, deem uma olhada.\n\nTítulo: {}\n\nRemetente: {}'.format(subject, sender) + for sender_subject in senders_subjects: + message += '\nRemetente: {}\nTítulo: {}\n'.format(sender_subject.sender, sender_subject.subject) send_message(message) -def save_latest_email_id(latest_email_id): +def save_latest_email_id(new_email_id): file_writer = open('recent_mail.txt', 'w') - file_writer.write(str(latest_email_id)) + file_writer.write(str(new_email_id)) file_writer.close() def send_message(message):