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