Added Send mail functionality & Dockerized application #1

Merged
PeterSurda merged 11 commits from cis-kuldeep/influx-smtp-gateway:master into master 2022-02-21 07:41:14 +01:00
3 changed files with 16 additions and 16 deletions
Showing only changes of commit 8488446e37 - Show all commits

View File

@ -3,8 +3,7 @@
SMTP gateway accessible from InfluxDB for sending alerts.
# create .env file with following parameters
server_host = 0.0.0.0
server_port = 8081
server_name = smtp.gmail.com
to_mail = test111@mailinator.com
from_mail = test@gmail.com
from_mail_password = test@123

View File

@ -3,7 +3,7 @@ version: '3.8'
services:
web:
build: .
ports:
- 8081:8081
expose:
- "8081"
env_file:
- ./.env

25
main.py
View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
Serve cloud init files
SMTP webhook server
"""
import os
@ -13,20 +13,19 @@ from email.mime.text import MIMEText
import cherrypy
class CloudInitApp:
class SMTPWebhookApp:
"""
Serve cloud init files
SMTP webhook server
"""
PeterSurda marked this conversation as resolved
Review

this should go under __main__

this should go under `__main__`
def _send_mail(self):
try:
# pylint: disable=deprecated-lambda
cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read(int(cl))
req_body = json.loads(rawbody)
subject = req_body['subject']
body = req_body['body']
client = smtplib.SMTP('smtp.gmail.com')
client = smtplib.SMTP(SERVER_NAME)
msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = FROM_MAIL
@ -45,26 +44,28 @@ class CloudInitApp:
@cherrypy.expose
def send_mail(self):
"""
v1 api endpoint user-data
api endpoint for send mail
"""
return self._send_mail()
ROOT = CloudInitApp()
ROOT = SMTPWebhookApp()
if __name__ == "__main__":
try:
SERVER_HOST = os.environ["server_host"]
SERVER_PORT = int(os.environ["server_port"])
SERVER_NAME = os.environ["server_name"]
TO_MAIL = os.environ["to_mail"]
FROM_MAIL = os.environ["from_mail"]
FROM_MAIL_PASSWORD = os.environ["from_mail_password"]
except: # noqa:E722
# to_mail = "test111@mailinator.com"
# from_mail = "test@gmail.com"
# from_mail_password = "test@123"
except KeyError:
raise "Please check missing environment variables: to_mail, from_mail, \
from_mail_password"
cherrypy.server.socket_host = SERVER_HOST
cherrypy.server.socket_port = SERVER_PORT
cherrypy.server.socket_host = "0.0.0.0"
cherrypy.server.socket_port = 8081
ENGINE = cherrypy.engine
cherrypy.tree.mount(ROOT, config={})