#!/usr/bin/python # -*- coding: utf-8 -*- from datetime import datetime import os from imap_tools import MailBox import requests def main(): print("connecting to imap server") mb = MailBox(os.getenv("MAIL_SERVER"), 993).login( os.getenv("MAIL_USER"), os.getenv("MAIL_PASSWORD") ) # Fetch all emails # Don't mark them as seen # Set bulk=True to read them all into memory in one fetch # (as opposed to in streaming which is slower but uses less memory) print("downloading mailz") message_reader = mb.fetch(mark_seen=False, bulk=True) messages = list(message_reader) unread = list(filter(lambda x: "\\Seen" not in x.flags, messages)) dates = [m.date.replace(tzinfo=None) for m in messages] median_date = sorted(dates)[len(dates) // 2] median_delta = datetime.now() - median_date oldest_date = sorted(dates)[0] oldest_delta = datetime.now() - oldest_date count = len(dates) count_unread = len(unread) output = f"""\ booping ur snoots :point_right: total emails: **{count}** unread: **{count_unread}** median email: recevied **{median_date}**, {median_delta} ago oldest email: recevied **{oldest_date}**, {oldest_delta} ago """ print("sendin boops") r = requests.post( os.getenv("ROCKETCHAT_HOOK_URL"), json={ "alias": "mailboop", "emoji": ":snake:", "text": output, # "attachments": [{ # "title": "Rocket.Chat", # "title_link": "https://rocket.chat", # "text": output, # # "image_url": "/images/integration-attachment-example.png", # "color": "#764FA5" # }] }, ) if __name__ == "__main__": main()