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)