Files
fsr_generator/helpers/read_ubmails.py
Yannik Enss 151f11d90b major refactoring
* move all scripts not intended to be called directly to helpers/ dir
* introduce sequencer.py as replacement for various scripts
* introduce --save option to generate.py
* other smaller changes/bugfixes
2022-03-09 16:18:20 +01:00

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 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)