diff --git a/client/dispatch-query.py b/client/dispatch-query.py index 4e0236d..91acb90 100755 --- a/client/dispatch-query.py +++ b/client/dispatch-query.py @@ -5,13 +5,26 @@ import subprocess import os import requests from functools import wraps +import smtphelper HTTP_NOT_FOUND = 404 AUTH = None -def email_address(dispatch_uuid, user_topic, message, smtp_target, smtp_user, smtp_pass): - '''Send message via email''' +def debug_send(uuid, data, fail_it=False): + '''Dummy function to print and ack a dispatch for debugging''' + print(json.dumps(data, intent=2)) + if fail_it: + report_failed_dispatch(uuid, "Dummy Error for Debugging") + else: + confirm_dispatch(uuid) + + +def email_send(dispatch_uuid, email_address, message, smtp_target, smtp_user, smtp_pass): + '''Send message via email''' + + subject = "Atlantis Dispatch" + smtphelper.smtp_send(smtp_target, smtp_user, smtp_pass, email_address, subject, message) report_failed_dispatch(uuid, "Email dispatch not yet implemented") def ntfy_send(dispatch_uuid, user_topic, message, ntfy_push_target, ntfy_user, ntfy_pass): @@ -117,7 +130,11 @@ if __name__ == "__main__": elif method == "ntfy": ntfy_send(dispatch_uuid, user_topic, message, ntfy_push_target, ntfy_user, ntfy_pass) elif method == "email": - email_send(email_address, message) + email_send(dispatch_uuid, email_address, message, smtp_target, smtp_user, smtp_pass) + elif method == "debug": + debug_send(uuid, entry) + elif method == "debug-fail": + debug_send(uuid, entry, fail_it=True) else: print("Unsupported dispatch method {}".format(entry["method"]), sys=sys.stderr) continue diff --git a/client/smtp.py b/client/smtp.py new file mode 100644 index 0000000..3355328 --- /dev/null +++ b/client/smtp.py @@ -0,0 +1,37 @@ +import smtplib +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart + +def smtp_send(server, user, password, recipient, subject, body): + + # Email and password for authentication + sender_email = f'{user}@{server}' + sender_password = password + + # Recipient email address + recipient_email = recipient + + # SMTP server details + smtp_server = server + smtp_port = 587 # Default port for TLS connection + + # Create a message + message = MIMEMultipart() + message['From'] = sender_email + message['To'] = recipient_email + message['Subject'] = subject + + # Add body to email + body = body + message.attach(MIMEText(body, 'plain')) + + # Establish a connection to the SMTP server + server = smtplib.SMTP(smtp_server, smtp_port) + server.starttls() # Secure the connection + server.login(sender_email, sender_password) + + # Send the email + server.sendmail(sender_email, recipient_email, message.as_string()) + + # Close the connection + server.quit()