ReXploreBackend / send_mail.py
raannakasturi's picture
Add email sending functionality and refactor post creation to include wait time parameter
ea7c078
raw
history blame
2.4 kB
from email import encoders
from email.mime.base import MIMEBase
import os
from datetime import datetime
from pytz import timezone
import pytz
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,
These are the details of the Blogs Posted at ReXplore: Science @ Fingertips.
Date & Time: {get_current_time()}
{generation_details}
Regards,
Nayan Kasturi (Raanna),
Developer & Maintainer,
ReXplore.
"""
return body
def get_current_time():
fmt = "%d-%m-%Y %H:%M:%S %Z%z"
now_utc = datetime.now(timezone('UTC'))
now_asia = now_utc.astimezone(timezone('Asia/Kolkata'))
return now_asia.strftime(fmt)
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(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)
data_attchment = create_attachment(data.encode('utf-8'), "data.txt")
subject = "New Blog Batch Published to ReXplore at " + get_current_time()
sender = {"name": "Project Gatekeeper", "email": "[email protected]"}
reply_to = {"name": "Project Gatekeeper", "email": "[email protected]"}
text_content = data
attachments = [
{"content": data_attchment.get_payload(), "name": data_attchment.get_filename()},
]
to = [{"email": "[email protected]"}]
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_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