56 lines
1.7 KiB
Python
Executable File
56 lines
1.7 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import mailbox
|
|
import jinja2
|
|
import email.header
|
|
import email.utils
|
|
import yaml
|
|
import datetime
|
|
import sys, os
|
|
import pypandoc
|
|
import argparse
|
|
import quopri
|
|
from pprint import pprint
|
|
from dateutil import parser
|
|
|
|
import generate
|
|
|
|
CONFIG_FILE = "generator.conf"
|
|
|
|
def decode_header(header):
|
|
decoded_header = email.header.decode_header(header)[0]
|
|
encoding = decoded_header[1] or "ascii"
|
|
if encoding == "unknown-8bit":
|
|
encoding = "ascii"
|
|
return decoded_header[0].decode(encoding, errors="replace") if isinstance(decoded_header[0], bytes) else decoded_header[0]
|
|
|
|
if __name__ == "__main__":
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--config", "-c", default=CONFIG_FILE)
|
|
args = parser.parse_args()
|
|
|
|
config = generate.get_config(args.config)
|
|
mbox = mailbox.Maildir(config["ubmails_inbox_maildir"])
|
|
|
|
latest = None
|
|
latest_date = None
|
|
|
|
for message in mbox:
|
|
if message["Subject"]:
|
|
if decode_header(message["Subject"]).strip() == "Unbeantwortete Mails":
|
|
date = parser.parse(message["Date"])
|
|
if latest is None:
|
|
latest = message
|
|
latest_date = date
|
|
elif latest_date < date:
|
|
latest = message
|
|
latest_date = date
|
|
|
|
if not latest:
|
|
print("ERROR: No Mail found", file=sys.stderr)
|
|
sys.exit(1)
|
|
if latest_date.date() != datetime.date.today():
|
|
print("WARNING: Mail is not from today", file=sys.stderr)
|
|
payload = latest.get_payload(decode=True).decode("utf8").strip()
|
|
result = (payload.rpartition("\n--")[0].strip() if "\n--" in payload else payload)
|
|
print(result)
|