From 812d0124323da28e647fc8ba6e9f1064479b47a9 Mon Sep 17 00:00:00 2001 From: Djalma Date: Fri, 23 Aug 2019 19:17:01 -0300 Subject: [PATCH 1/4] Adding SenderSubject type --- classes/types.py | 4 ++++ 1 file changed, 4 insertions(+) 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 From 5453374032a136c587ef306faa661dbf8c1325b3 Mon Sep 17 00:00:00 2001 From: Djalma Date: Fri, 23 Aug 2019 19:21:58 -0300 Subject: [PATCH 2/4] Changing mail script to support multiple mail subject sending --- mail.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mail.py b/mail.py index a59e8c2..2390a90 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 @@ -21,24 +22,23 @@ def check_gmail(): current_mail_id = int(file_reader.read()) 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 - file_reader.close() - + + latest_email_id = possible_new_email_id save_latest_email_id(latest_email_id) - raw_email = imap.fetchs([latest_email_id]) + senders_subjects = [] + message = 'Shalom Adonai, irmãos. Novo(s) e-mail(s), deem uma olhada:\n' + + for mail_id in range(current_mail_id + 1, latest_email_id + 1): + raw_email = imap.fetchs([mail_id]) - mail_parser = MailWrapper(raw_email) - sender = mail_parser.get_sender() + mail_parser = MailWrapper(raw_email) - subject = mail_parser.get_subject() + senders_subjects.append(MailSenderSubject(mail_parser.get_sender(), 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 ss in senders_subjects: + message += '\nRemetente: {}\nTítulo: {}\n'.format(ss.sender, ss.subject) send_message(message) From 2b26920db12946cb99b5f38d73fa5aab04f9a867 Mon Sep 17 00:00:00 2001 From: Djalma Date: Fri, 23 Aug 2019 19:22:35 -0300 Subject: [PATCH 3/4] Removing a print() --- classes/mail_wrapper.py | 1 - 1 file changed, 1 deletion(-) 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 From 8a6dda37c395184df47abfd78dded701bc63514c Mon Sep 17 00:00:00 2001 From: Djalma Date: Mon, 26 Aug 2019 00:21:50 -0300 Subject: [PATCH 4/4] Rename variables for readability --- mail.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/mail.py b/mail.py index 2390a90..e1b53d3 100644 --- a/mail.py +++ b/mail.py @@ -11,40 +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: - file_reader.close() - - latest_email_id = possible_new_email_id - save_latest_email_id(latest_email_id) + if new_email_id > current_mail_id: + save_latest_email_id(new_email_id) senders_subjects = [] message = 'Shalom Adonai, irmãos. Novo(s) e-mail(s), deem uma olhada:\n' - for mail_id in range(current_mail_id + 1, latest_email_id + 1): + for mail_id in range(current_mail_id + 1, new_email_id + 1): raw_email = imap.fetchs([mail_id]) mail_parser = MailWrapper(raw_email) senders_subjects.append(MailSenderSubject(mail_parser.get_sender(), mail_parser.get_subject())) - for ss in senders_subjects: - message += '\nRemetente: {}\nTítulo: {}\n'.format(ss.sender, ss.subject) + 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):