Spaces:
Running
Running
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 |