nixfleet/packages/emails-watcher/emails-watcher.py
Andrea Ciceri d2237c0a12
Some checks failed
BUILD x86_64-linux.picard
UPLOAD x86_64-linux.picard
DOWNLOAD x86_64-linux.picard
CACHIX x86_64-linux.picard
ATTIC x86_64-linux.picard
EVAL x86_64-linux.picard
/ test (push) Successful in 20s
Format
2024-12-18 14:58:39 +01:00

40 lines
1.3 KiB
Python

import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from email import message_from_file
from desktop_notifier import DesktopNotifierSync, DEFAULT_SOUND, Icon
class MaildirHandler(FileSystemEventHandler):
def __init__(self, notifier):
super().__init__()
self.notifier = notifier
def on_created(self, event):
if not event.is_directory:
print(f"New email found: {event.src_path}")
with open(event.src_path, "r") as email_file:
msg = message_from_file(email_file)
print(f'{msg["From"]}: {msg["Subject"]}')
self.notifier.send(
title=msg["From"],
message=msg["Subject"],
sound=DEFAULT_SOUND,
icon=Icon(name="mail-message-new"),
timeout=20,
)
if __name__ == "__main__":
maildir_new = os.path.expanduser(os.environ.get("INBOX_NEW"))
notifier = DesktopNotifierSync(app_name="Mails", notification_limit=10)
event_handler = MaildirHandler(notifier)
observer = Observer()
observer.schedule(event_handler, maildir_new, recursive=False)
print(f"Monitoring {maildir_new} for new emails...")
observer.start()
observer.join()