Simple lightweight mail system for FastAPI — send emails, attachments, and HTML templates.
Documentation: sabuhish.github.io/fastapi-mail
pip install fastapi-mailfrom typing import List
from fastapi import FastAPI
from fastapi_mail import ConnectionConfig, FastMail, MessageSchema, MessageType, NameEmail
from pydantic import BaseModel
from starlette.responses import JSONResponse
class EmailSchema(BaseModel):
email: List[NameEmail]
conf = ConnectionConfig(
MAIL_USERNAME="username",
MAIL_PASSWORD="**********",
MAIL_FROM="test@email.com",
MAIL_PORT=465,
MAIL_SERVER="mail server",
MAIL_STARTTLS=False,
MAIL_SSL_TLS=True,
USE_CREDENTIALS=True,
VALIDATE_CERTS=True,
)
app = FastAPI()
@app.post("/email")
async def simple_send(email: EmailSchema) -> JSONResponse:
message = MessageSchema(
subject="Fastapi-Mail module",
recipients=email.model_dump().get("email"),
body="<p>Thanks for using Fastapi-mail</p>",
subtype=MessageType.html,
)
await FastMail(conf).send_message(message)
return JSONResponse(status_code=200, content={"message": "email has been sent"})Contributions of any kind are welcome! Please read CONTRIBUTING before you start.
Thanks goes to these wonderful people.