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
# 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)
Run project
uvicorn main:app --reload --port 8000
Top comments (2)
It seems like a lot has changed since that time. Mine isn't working
Great, Thanks!