commit
594b01679a
@ -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…
Reference in new issue