#!/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 as dateutilparser 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__": aparser = argparse.ArgumentParser() aparser.add_argument("--config", "-c", default=CONFIG_FILE) args = aparser.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 = dateutilparser.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)