Files
ops-PostOffice/postman.py
2019-06-11 17:44:16 +03:30

61 lines
1.6 KiB
Python

#!/usr/bin/env python3
import argparse
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.utils import formatdate
from email import encoders
import os
import smtplib
import requests
def send_mail(to, fro, subject, text, files=None, server='localhost'):
if files is None:
files = []
assert type(to) == list
assert type(files) == list
msg = MIMEMultipart()
msg['From'] = fro
msg['To'] = ', '.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach(MIMEText(text))
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload(open(file, "rb").read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
smtp = smtplib.SMTP(server)
smtp.sendmail(fro, to, msg.as_string())
smtp.close()
def main():
parser = argparse.ArgumentParser()
parser.add_argument('host', type=str)
parser.add_argument('--user', type=str)
parser.add_argument('--password', type=str)
args = parser.parse_args()
auth = (args.user, args.password) if 'user' in args else None
messages = requests.get('http://{}/'.format(args.host), auth=auth).json()
for message in messages:
send_mail(
message['rcpt_tos'],
message['mail_from'],
message['subject'],
message['body']
)
if __name__ == '__main__':
main()