DEV Community

Cover image for How to send emails with FastAPI
Nelson Hernández
Nelson Hernández

Posted on

How to send emails with FastAPI

In this example we will send an email through a POST type endpoint that will receive the information from the recipient

pip install fastapi uvicorn
Enter fullscreen mode Exit fullscreen mode
# main.py
from fastapi import FastAPI
from fastapi.exceptions import HTTPException
from pydantic import BaseModel
from smtplib import SMTP_SSL
from email.mime.text import MIMEText

app = FastAPI()

OWN_EMAIL = "hello@example.com"
OWN_EMAIL_PASSWORD = "your-password"

class EmailBody(BaseModel):
    to: str
    subject: str
    message: str

@app.post("/email")
async def send_email(body: EmailBody):
    try:
        msg = MIMEText(body.message, "html")
        msg['Subject'] = body.subject
        msg['From'] = f'Denolyrics <{OWN_EMAIL}>'
        msg['To'] = body.to

        port = 465  # For SSL

        # Connect to the email server
        server = SMTP_SSL("mail.privateemail.com", port)
        server.login(OWN_EMAIL, OWN_EMAIL_PASSWORD)

        # Send the email
        server.send_message(msg)
        server.quit()
        return {"message": "Email sent successfully"}

    except Exception as e:
        raise HTTPException(status_code=500, detail=e)
Enter fullscreen mode Exit fullscreen mode

Run project

uvicorn main:app --reload --port 8000
Enter fullscreen mode Exit fullscreen mode

Top comments (2)

Collapse
 
mosesmuwawu profile image
Muwawu Moses • Edited

It seems like a lot has changed since that time. Mine isn't working

Collapse
 
alexcaranha profile image
Alex Libório Caranha

Great, Thanks!