orderSSL / send_mail.py
raannakasturi's picture
Refactor imports in acme_tools.py and app.py
43737a5
raw
history blame contribute delete
No virus
2.75 kB
import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders
from dotenv import load_dotenv
load_dotenv()
smtp_port = os.getenv("PORT")
smtp_server = os.getenv("SERVER")
smtp_login = os.getenv("LOGIN")
smtp_passwd = os.getenv("PASSWD")
def mail_body(email, generation_details):
body = f"""
Hello {email},
Thankyou for using Project Gatekeeper to generate your SSL certificate.
Your SSL certificate has been generated and is attached to this email.
Please find the attached file for your SSL certificate.
{generation_details}
Regards,
Nayan Kasturi (Raanna),
Developer & Maintainer,
Project Gatekeeper.
"""
return body
def make_attachment(private_key, csr, cert):
pvt = perpare_pvt(private_key)
csr = perpare_csr(csr)
ssl = perpare_ssl(cert)
return pvt, csr, ssl
def perpare_pvt(pvt):
filename = "private_key.key"
pvt= pvt.encode('utf-8')
pvtkey = MIMEBase('application', 'octet-stream')
pvtkey.set_payload(pvt)
encoders.encode_base64(pvtkey)
pvtkey.add_header('Content-Disposition', "attachment; filename= " + filename)
return pvtkey
def perpare_csr(csr):
filename = "domain.csr"
csr= csr.encode('utf-8')
domaincsr = MIMEBase('application', 'octet-stream')
domaincsr.set_payload(csr)
encoders.encode_base64(domaincsr)
domaincsr.add_header('Content-Disposition', "attachment; filename= " + filename)
return domaincsr
def perpare_ssl(ssl):
filename = "ssl_certificate.crt"
ssl= ssl.encode('utf-8')
sslcrt = MIMEBase('application', 'octet-stream')
sslcrt.set_payload(ssl)
encoders.encode_base64(sslcrt)
sslcrt.add_header('Content-Disposition', "attachment; filename= " + filename)
return sslcrt
def prepare_email(email, private_key, csr, cert, generation_details):
body = mail_body(email, generation_details)
msg = MIMEMultipart()
msg['From'] = "Project Gatekeeper <{}>".format(smtp_login)
msg['To'] = email
msg['Subject'] = "Project Gatekeeper - Your SSL Certificate is ready!"
msg.attach(MIMEText(body, 'plain'))
p, c, s = make_attachment(private_key, csr, cert)
for attachment_package in [p, c, s]:
msg.attach(attachment_package)
text = msg.as_string()
return text
def send_email(email, private_key, csr, cert, generation_details):
data = prepare_email(email, private_key, csr, cert, generation_details)
TIE_server = smtplib.SMTP(smtp_server, smtp_port)
TIE_server.starttls()
TIE_server.login(smtp_login, smtp_passwd)
TIE_server.sendmail(from_addr=smtp_login, to_addrs=email, msg=data)
TIE_server.quit()