diff --git a/main.py b/main.py index 1904483..e0554d3 100644 --- a/main.py +++ b/main.py @@ -26,8 +26,7 @@ class SMTPWebhookApp: def _send_mail(self): if not cherrypy.request.headers.get('Content-Length'): - logging.error("To: {}, error: Invalid content length.".format( - TO_MAIL)) + logging.error("error: Invalid content length.") return {"status": 400, "message": "Invalid content length."} cl = cherrypy.request.headers['Content-Length'] @@ -35,30 +34,33 @@ class SMTPWebhookApp: req_body = json.loads(rawbody) if not req_body.get('subject') or req_body.get('subject') == '': - logging.error("To: {}, error: body field is required.".format( - TO_MAIL)) + logging.error("error: body field is required.") return {"status": 400, "message": "subject field is required."} if not req_body.get('body') or req_body.get('body') == '': - logging.error("To: {}, error: body field is required.".format( - TO_MAIL)) + logging.error("error: body field is required.") return {"status": 400, "message": "body field is required."} + if not req_body.get('to_mail') or req_body.get('to_mail') == '': + logging.error("error: to_mail field is required.") + return {"status": 400, "message": "to_mail field is required."} + subject = req_body['subject'] body = req_body['body'] + to_mail = req_body['to_mail'] try: client = smtplib.SMTP(host=SMTP_SERVER_HOST, port=SMTP_SERVER_PORT) except (smtplib.SMTPConnectionError, TimeoutError) as e: time.sleep(0.2) - logging.error("To: {}, error: {}".format(TO_MAIL, e)) + logging.error("To: {}, error: {}".format(to_mail, e)) return {"status": 400, "message": "SMTP client error: {}.".format( e)} msg = MIMEText(body, 'plain', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = FROM_MAIL - msg['To'] = TO_MAIL + msg['To'] = to_mail try: client.ehlo() client.starttls() @@ -66,10 +68,10 @@ class SMTPWebhookApp: client.login(msg["From"], FROM_MAIL_PASSWORD) client.sendmail(msg['From'], msg['To'], msg.as_string()) response = {"status": 200, "message": "mail sent successfully"} - logging.info("To: {}, mail sent successfully".format(TO_MAIL)) + logging.info("To: {}, mail sent successfully".format(to_mail)) except smtplib.SMTPException as e: time.sleep(0.2) - logging.error("To: {}, error: {}".format(TO_MAIL, e)) + logging.error("To: {}, error: {}".format(to_mail, e)) response = {"status": 500, "message": "some error: {}".format(e)} finally: client.quit() @@ -95,12 +97,11 @@ CHERRYPY_SERVER_PORT = 8081 if __name__ == "__main__": try: SMTP_SERVER_HOST = os.environ["SMTP_SERVER_HOST"] - TO_MAIL = os.environ["TO_MAIL"] FROM_MAIL = os.environ["FROM_MAIL"] FROM_MAIL_PASSWORD = os.environ["FROM_MAIL_PASSWORD"] except KeyError: raise KeyError("Please check missing environment variables: " - "SMTP_SERVER_HOST, TO_MAIL, FROM_MAIL, " + "SMTP_SERVER_HOST, FROM_MAIL, " "FROM_MAIL_PASSWORD") cherrypy.server.socket_host = CHERRYPY_SERVER_HOST