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.
This commit is contained in:
parent
d97754876a
commit
901762f178
1 changed files with 5 additions and 4 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue