diff --git a/remindme.py b/remindme.py index d3aee89..f2ad48b 100755 --- a/remindme.py +++ b/remindme.py @@ -14,6 +14,17 @@ from croniter import croniter help_text = """ A very comprehensive help text """ +service_address = "remindme@friedersdorff.com" + +def empty_reply(msg): + reply = email.message.EmailMessage() + reply["Subject"] = f"RE: {msg['Subject']}" + reply["Message-ID"] = email.utils.make_msgid() + reply["In-Reply-To"] = msg["Message-ID"] + reply["References"] = msg["Message-ID"] + reply["To"] = msg["Reply-To"] or msg["From"] + reply["From"] = service_address + return reply def ack_message(uid, message, client): @@ -25,16 +36,26 @@ def ack_message(uid, message, client): payload = msg.get_payload().strip() if payload.startswith("help"): - print("We should help") - reply = email.message.EmailMessage() + reply = empty_reply(msg) reply.set_content(help_text) - reply["Subject"] = f"Help for remindme service (was {msg['Subject']})" - reply["Message-ID"] = email.utils.make_msgid() - reply["In-Reply-To"] = msg["Message-ID"] - reply["References"] = msg["Message-ID"] - reply["To"] = msg["Reply-To"] or msg["From"] - reply["From"] = "remindme@friedersdorff.com" return reply, True + + if payload.startswith("list"): + persons_messages = client.fetch( + client.search(["FROM", msg["From"]]), "RFC822" + ) + reminders = [] + for uid, reminder in persons_messages.items(): + reminder = email.message_from_bytes(reminder[b"RFC822"]) + reminders.append( + (reminder["Subject"], reminder.get_payload().strip()) + ) + reply = empty_reply(msg) + reply.set_content("\n".join( + [f"({i}) {r[0]}: {r[1]}" for i, r in enumerate(reminders)] + )) + return reply, True + if payload.startswith("repeat"): try: print(get_description(payload))