139 lines
4.8 KiB
Python
139 lines
4.8 KiB
Python
import smtplib
|
|
from email.message import EmailMessage
|
|
import os
|
|
|
|
def send_email(to_email, subject, body):
|
|
smtp_host = os.environ.get("SMTP_HOST")
|
|
smtp_port = int(os.environ.get("SMTP_PORT", 587))
|
|
smtp_user = os.environ.get("SMTP_USER")
|
|
smtp_pass = os.environ.get("SMTP_PASS")
|
|
sender_email = os.environ.get("SMTP_FROM", smtp_user)
|
|
|
|
if not all([smtp_host, smtp_port, smtp_user, smtp_pass]):
|
|
raise ValueError("SMTP config incomplete in environment variables.")
|
|
|
|
msg = EmailMessage()
|
|
msg["Subject"] = subject
|
|
msg["From"] = sender_email
|
|
msg["To"] = to_email
|
|
msg.set_content(body)
|
|
|
|
with smtplib.SMTP(smtp_host, smtp_port) as server:
|
|
server.starttls()
|
|
server.login(smtp_user, smtp_pass)
|
|
server.send_message(msg)
|
|
|
|
|
|
# Send email with attachment
|
|
def send_email_with_attachment(to_email, subject, body, attachment_path):
|
|
smtp_host = os.environ.get("SMTP_HOST")
|
|
smtp_port = int(os.environ.get("SMTP_PORT", 587))
|
|
smtp_user = os.environ.get("SMTP_USER")
|
|
smtp_pass = os.environ.get("SMTP_PASS")
|
|
sender_email = os.environ.get("SMTP_FROM", smtp_user)
|
|
|
|
if not all([smtp_host, smtp_port, smtp_user, smtp_pass]):
|
|
raise ValueError("SMTP config incomplete in environment variables.")
|
|
|
|
msg = EmailMessage()
|
|
msg["Subject"] = subject
|
|
msg["From"] = sender_email
|
|
msg["To"] = to_email
|
|
msg.set_content(body)
|
|
|
|
if attachment_path and os.path.isfile(attachment_path):
|
|
with open(attachment_path, "rb") as f:
|
|
file_data = f.read()
|
|
file_name = os.path.basename(attachment_path)
|
|
msg.add_attachment(file_data, maintype="application", subtype="pdf", filename=file_name)
|
|
else:
|
|
raise FileNotFoundError(f"Attachment file not found: {attachment_path}")
|
|
|
|
with smtplib.SMTP(smtp_host, smtp_port) as server:
|
|
server.starttls()
|
|
server.login(smtp_user, smtp_pass)
|
|
server.send_message(msg)
|
|
|
|
|
|
# Send email using Gmail directly
|
|
def send_gmail(to_email, subject, body):
|
|
smtp_host = "smtp.gmail.com"
|
|
smtp_port = 587
|
|
smtp_user = 'macamete.robert@gmail.com'
|
|
smtp_pass = 'advx yqlv jkaa czvr'
|
|
sender_email = 'macamete.robert@gmail.com'
|
|
|
|
if not all([smtp_user, smtp_pass]):
|
|
raise ValueError("GMAIL_USER and GMAIL_PASS must be set in environment variables.")
|
|
|
|
msg = EmailMessage()
|
|
msg["Subject"] = subject
|
|
msg["From"] = sender_email
|
|
msg["To"] = to_email
|
|
msg.set_content(body)
|
|
|
|
with smtplib.SMTP(smtp_host, smtp_port) as server:
|
|
server.starttls()
|
|
server.login(smtp_user, smtp_pass)
|
|
server.send_message(msg)
|
|
|
|
|
|
# Send email with attachment using Gmail directly
|
|
def send_gmail_with_attachment(to_email, subject, body, attachment_path):
|
|
smtp_host = "smtp.gmail.com"
|
|
smtp_port = 587
|
|
smtp_user = 'macamete.robert@gmail.com'
|
|
smtp_pass = 'advx yqlv jkaa czvr'
|
|
sender_email = 'macamete.robert@gmail.com'
|
|
|
|
if not all([smtp_user, smtp_pass]):
|
|
raise ValueError("GMAIL_USER and GMAIL_PASS must be set in environment variables.")
|
|
|
|
msg = EmailMessage()
|
|
msg["Subject"] = subject
|
|
msg["From"] = sender_email
|
|
msg["To"] = to_email
|
|
msg.set_content(body)
|
|
|
|
if attachment_path and os.path.isfile(attachment_path):
|
|
with open(attachment_path, "rb") as f:
|
|
file_data = f.read()
|
|
file_name = os.path.basename(attachment_path)
|
|
msg.add_attachment(file_data, maintype="application", subtype="pdf", filename=file_name)
|
|
else:
|
|
raise FileNotFoundError(f"Attachment file not found: {attachment_path}")
|
|
|
|
with smtplib.SMTP(smtp_host, smtp_port) as server:
|
|
server.starttls()
|
|
server.login(smtp_user, smtp_pass)
|
|
server.send_message(msg)
|
|
|
|
# Send email with attachment
|
|
def send_custom_email_with_attachment(to_email, subject, body, attachment_path, SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS):
|
|
smtp_host = SMTP_HOST
|
|
smtp_port = int(SMTP_PORT)
|
|
smtp_user = SMTP_USER
|
|
smtp_pass = SMTP_PASS
|
|
sender_email = smtp_user
|
|
|
|
if not all([smtp_host, smtp_port, smtp_user, smtp_pass]):
|
|
raise ValueError("SMTP config incomplete in environment variables.")
|
|
|
|
msg = EmailMessage()
|
|
msg["Subject"] = subject
|
|
msg["From"] = sender_email
|
|
msg["To"] = to_email
|
|
msg.set_content(body)
|
|
|
|
if attachment_path and os.path.isfile(attachment_path):
|
|
with open(attachment_path, "rb") as f:
|
|
file_data = f.read()
|
|
file_name = os.path.basename(attachment_path)
|
|
msg.add_attachment(file_data, maintype="application", subtype="pdf", filename=file_name)
|
|
else:
|
|
raise FileNotFoundError(f"Attachment file not found: {attachment_path}")
|
|
|
|
with smtplib.SMTP(smtp_host, smtp_port) as server:
|
|
server.starttls()
|
|
server.login(smtp_user, smtp_pass)
|
|
server.send_message(msg) |