initial commit

main
mw 3 years ago
commit 594b01679a
  1. 12
      Dockerfile
  2. 40
      pmml.py
  3. 1
      requirements.txt

@ -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"]

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

@ -0,0 +1 @@
click>=8.1.3
Loading…
Cancel
Save