Added email capabilities.
Added lastlog, logs are now appended to .log and .log.last are send per email.
This commit is contained in:
70
mail_template.py
Executable file
70
mail_template.py
Executable file
@@ -0,0 +1,70 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
# Imports
|
||||
|
||||
import smtplib
|
||||
import configparser
|
||||
import datetime
|
||||
import os
|
||||
from platform import node
|
||||
from email.utils import make_msgid
|
||||
|
||||
## Setup variables
|
||||
|
||||
HOSTNAME = node()
|
||||
|
||||
recivers = ["example@example.com", "example2@example.com"]
|
||||
subject = f"Backup on \"{HOSTNAME}\", for SERVICE complete."
|
||||
message = f"Result of backup on server {HOSTNAME}\n"
|
||||
|
||||
|
||||
if "LASTLOG" not in os.environ:
|
||||
print("No logfile found, please set environment variable LASTLOG to the borg logfile")
|
||||
exit(5)
|
||||
else:
|
||||
logfile = os.environ["LASTLOG"]
|
||||
|
||||
with open(logfile, "r") as log:
|
||||
for line in log.readlines():
|
||||
message += line
|
||||
|
||||
## Load mail config from secrets file.
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read('/home/adam/scripts/secrets.env')
|
||||
|
||||
server_name = config['MAIL']['SERVER']
|
||||
server_port = config['MAIL']['PORT']
|
||||
server_pass = config['MAIL']['PASS']
|
||||
mail_user = config['MAIL']['USER']
|
||||
|
||||
sender = mail_user
|
||||
|
||||
def send_email(reciever, sender, subject, message):
|
||||
server = smtplib.SMTP(server_name, server_port)
|
||||
server.starttls()
|
||||
server.login(sender, server_pass)
|
||||
|
||||
## Yes we build the header entry for entry, this is done for readability.
|
||||
|
||||
header = ""
|
||||
|
||||
header += f"From: {sender}\n"
|
||||
header += f"To: {reciever}\n"
|
||||
header += f"Subject: {subject}\n"
|
||||
header += f"Date: {datetime.datetime.now().strftime('%a, %d %b %Y %H:%M:%S %Z')}\n"
|
||||
header += f"Message-ID: {make_msgid(domain=sender.split('@')[-1])}\n"
|
||||
header += "X-Mailer: python\n"
|
||||
header += "MIME-Version: 1.0\n"
|
||||
header += "Content-Type: text/plain; charset=utf-8\n"
|
||||
header += "Content-Disposition: inline\n"
|
||||
header += "Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
## And now we make the payload.
|
||||
|
||||
msg = f"{header}\n{message}" # The /n separates the message from the headers
|
||||
server.sendmail(sender, receiver, msg.encode("utf-8"))
|
||||
|
||||
for receiver in recivers:
|
||||
send_email(receiver , sender, subject, message)
|
||||
|
||||
Reference in New Issue
Block a user