commit 594b01679aac99090909a8b2398abfc0df4fc1fd Author: mw Date: Wed Dec 21 09:07:35 2022 +0100 initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..30e70f8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM 3.11.1-alpine3.17 + +RUN adduser -D app && apk update && apk add fetchmail + +USER app +WORKDIR /app + +COPY ./requirements.txt ./requirements.txt + +RUN pip install -r requirements.txt + +ENTRYPOINT ["fetchmail"] diff --git a/pmml.py b/pmml.py new file mode 100755 index 0000000..976827c --- /dev/null +++ b/pmml.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +import click +import sys +import os +import email +import email.parser +import smtplib +import json +from pathlib import Path + + +DEFAULT_CONFIG_FILE_PATH=Path.home() / ".pmmlrc" + + +def read_config_file(config_file_path): + with open(config_file_path) as f: + config = json.load(f) + return config + +def setup_smtp_session(smtp_server, smtp_port, smtp_user, smtp_pass): + smtp_client = smtplib.SMTP(host=smtp_server, port=smtp_port) + smtp_client.ehlo() + smtp_client.starttls() + smtp_client.login(smtp_user, smtp_pass) + return smtp_client + +@click.command() +@click.option("-f", "--config-file", default=DEFAULT_CONFIG_FILE_PATH) +@click.argument("mailing-list-address") +def cli(config_file, mailing_list_address): + input = sys.stdin + config = read_config_file(config_file)[mailing_list_address] + msg = email.parser.Parser().parse(input) + smtp_client = setup_smtp_session(config['smtp_server'], config['smtp_port'], + config['smtp_user'], config['smtp_pass']) + smtp_client.sendmail(mailing_list_address, config['recipients'], msg.as_string()) + smtp_client.quit() + +if __name__ == '__main__': + cli() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2520986 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +click>=8.1.3