orderSSL / send_mail.py
raannakasturi's picture
Update send_mail.py
1d6fc28 verified
raw
history blame
2.56 kB
from email import encoders
from email.mime.base import MIMEBase
import os
import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
from dotenv import load_dotenv
load_dotenv()
mail_api = os.getenv("MAIL_API")
def mail_body(generation_details):
body = f"""
Hello,
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.
https://projectgatekeeper.vercel.app/
"""
return body
def create_attachment(content, filename):
attachment = MIMEBase('application', 'octet-stream')
attachment.set_payload(content)
encoders.encode_base64(attachment)
attachment.add_header('Content-Disposition', f'attachment; filename="{filename}"')
return attachment
def send_email(email, private_key, csr, cert, generation_details):
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = mail_api
api_instance = sib_api_v3_sdk.TransactionalEmailsApi(sib_api_v3_sdk.ApiClient(configuration))
data = mail_body(generation_details)
p_attachment = create_attachment(private_key.encode('utf-8'), "private_key.txt")
c_attachment = create_attachment(csr.encode('utf-8'), "domain_csr.txt")
s_attachment = create_attachment(cert.encode('utf-8'), "ssl_certificate_chain.txt")
subject = "Project Gatekeeper - Your SSL Certificate is ready!"
sender = {"name": "Project Gatekeeper", "email": "[email protected]"}
reply_to = {"name": "Project Gatekeeper", "email": "[email protected]"}
text_content = data
attachments = [
{"content": p_attachment.get_payload(), "name": p_attachment.get_filename()},
{"content": c_attachment.get_payload(), "name": c_attachment.get_filename()},
{"content": s_attachment.get_payload(), "name": s_attachment.get_filename()},
]
to = [{"email": email}]
send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(to=to, reply_to=reply_to, attachment=attachments, text_content=text_content, sender=sender, subject=subject)
try:
api_response = api_instance.send_transac_email(send_smtp_email)
print("Email Sent")
return True
except ApiException as e:
print("Can't send email")
print("Exception when calling SMTPApi->send_transac_email: %s\n" % e)
return False