66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
#!/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()
|