From 901762f1785fddf1c63ea8f7f7ede7323b362a3c Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Thu, 12 Dec 2019 20:47:42 +0000 Subject: [PATCH] Do not set messages as seen at search/fetch time Prevents exception between fetch and ack loosing the ack. In cases of transient problems, the ack will be sent on the next pass. --- remindme.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/remindme.py b/remindme.py index e11bcd5..a736bc9 100755 --- a/remindme.py +++ b/remindme.py @@ -29,11 +29,11 @@ def empty_reply(msg): def list_reminders(person, client): persons_messages = client.fetch( - client.search(["FROM", person]), "RFC822" + client.search(["FROM", person]), "BODY.PEEK[]" ) reminders = [] for uid, reminder in persons_messages.items(): - reminder = email.message_from_bytes(reminder[b"RFC822"]) + reminder = email.message_from_bytes(reminder[b"BODY[]"]) reminders.append( f"({uid}) {reminder['Subject']}: {reminder.get_payload().strip()}" ) @@ -41,7 +41,8 @@ def list_reminders(person, client): def ack_message(uid, message, client): - msg = email.message_from_bytes(message[b"RFC822"]) + print(message) + msg = email.message_from_bytes(message[b"BODY[]"]) if msg.is_multipart(): print("Deleting multipart message") return None, True @@ -88,7 +89,7 @@ def main(): sclient.login(user, passwd) iclient.select_folder("INBOX") - unseen_msgs = iclient.fetch(iclient.search(["UNSEEN"]), 'RFC822') + unseen_msgs = iclient.fetch(iclient.search(["UNSEEN"]), "BODY.PEEK[]") for uid, message in unseen_msgs.items(): print(uid) reply, delete = ack_message(uid, message, iclient)