In my Task Automation API, I added email notification support using Python’s smtplib
. The setup is minimal, uses no extra packages, and leverages environment variables to securely manage SMTP credentials.
Here’s a breakdown of the implementation, inspired by this commit:
View commit on GitHub
Email Sending Function with smtplib
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import os
def send_email(recipient: str, subject: str, body: str):
sender = os.getenv("SMTP_SENDER")
password = os.getenv("SMTP_PASSWORD")
smtp_server = os.getenv("SMTP_SERVER")
smtp_port = int(os.getenv("SMTP_PORT", 587))
msg = MIMEMultipart()
msg["From"] = sender
msg["To"] = recipient
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))
with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(sender, password)
server.sendmail(sender, recipient, msg.as_string())
Environment Variables Setup
To keep secrets out of the codebase, define these in your .env
file or server environment:
-
SMTP_SENDER
: Your email address -
SMTP_PASSWORD
: SMTP password or app-specific password -
SMTP_SERVER
: SMTP host, e.g.,smtp.gmail.com
-
SMTP_PORT
: Port number, usually587
How I Use It
After a user schedules a task, once and it’s validated, I call send_email
to notify them:
send_email(
recipient=current_user.email,
subject="File Upload Successful",
body=f"Your file {file.filename} was uploaded and verified."
)
Why This Approach?
- No external dependencies
- Secure configuration with environment variables
- Easy to extend for HTML emails or attachments later
Wrap Up
Adding SMTP email with smtplib
is a lightweight, effective way to send notifications in your FastAPI app. This pattern fits nicely in automation workflows like mine.
Check out the full commit for details:
GitHub link
If you need help integrating emailing or environment management in your project, let me know.
Top comments (0)