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. SMTP gateway accessible from InfluxDB for sending alerts.
# create .env file with following parameters # create .env file with following parameters
server_host = 0.0.0.0 server_name = smtp.gmail.com
server_port = 8081
to_mail = test111@mailinator.com to_mail = test111@mailinator.com
from_mail = test@gmail.com from_mail = test@gmail.com
from_mail_password = test@123 from_mail_password = test@123

View File

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

25
main.py
View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
""" """
Serve cloud init files SMTP webhook server
""" """
import os import os
@ -13,20 +13,19 @@ from email.mime.text import MIMEText
import cherrypy 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): def _send_mail(self):
try: try:
# pylint: disable=deprecated-lambda
cl = cherrypy.request.headers['Content-Length'] cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read(int(cl)) rawbody = cherrypy.request.body.read(int(cl))
req_body = json.loads(rawbody) req_body = json.loads(rawbody)
subject = req_body['subject'] subject = req_body['subject']
body = req_body['body'] body = req_body['body']
client = smtplib.SMTP('smtp.gmail.com') client = smtplib.SMTP(SERVER_NAME)
msg = MIMEText(body, 'plain', 'utf-8') msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = FROM_MAIL msg['From'] = FROM_MAIL
@ -45,26 +44,28 @@ class CloudInitApp:
@cherrypy.expose @cherrypy.expose
def send_mail(self): def send_mail(self):
""" """
v1 api endpoint user-data api endpoint for send mail
""" """
return self._send_mail() return self._send_mail()
ROOT = CloudInitApp() ROOT = SMTPWebhookApp()
if __name__ == "__main__": if __name__ == "__main__":
try: try:
SERVER_HOST = os.environ["server_host"] SERVER_NAME = os.environ["server_name"]
SERVER_PORT = int(os.environ["server_port"])
TO_MAIL = os.environ["to_mail"] TO_MAIL = os.environ["to_mail"]
FROM_MAIL = os.environ["from_mail"] FROM_MAIL = os.environ["from_mail"]
FROM_MAIL_PASSWORD = os.environ["from_mail_password"] 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, \ raise "Please check missing environment variables: to_mail, from_mail, \
from_mail_password" from_mail_password"
cherrypy.server.socket_host = SERVER_HOST cherrypy.server.socket_host = "0.0.0.0"
cherrypy.server.socket_port = SERVER_PORT cherrypy.server.socket_port = 8081
ENGINE = cherrypy.engine ENGINE = cherrypy.engine
cherrypy.tree.mount(ROOT, config={}) cherrypy.tree.mount(ROOT, config={})