duyuxuan / fastapi-mail

Fastapi mail system sending mails(individual, bulk) attachments(individual, bulk)

Home Page:https://sabuhish.github.io/fastapi-mail/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fastapi-mail

The fastapi-mail simple lightweight mail system, sending emails and attachments(individual && bulk)

MIT licensed GitHub stars GitHub forks GitHub issues Downloads

πŸ”¨ Installation

 $ pip install fastapi-mail

Documentation: FastApi-MAIL

The key features are:

  • sending emails with either with FastApi or using asyncio module
  • sending emails using FastApi background task managment
  • sending files either from form-data or files from server
  • Using Jinja2 HTML Templates
  • email utils (utility allows you to check temporary email addresses, you can block any email or domain)
  • email utils has two available classes DefaultChecker and WhoIsXmlApi
  • Unittests using FastapiMail

More information on Getting-Started

Guide

from fastapi import FastAPI, BackgroundTasks, UploadFile, File, Form
from starlette.responses import JSONResponse
from starlette.requests import Request
from fastapi_mail import FastMail, MessageSchema,ConnectionConfig
from pydantic import BaseModel, EmailStr
from typing import List



class EmailSchema(BaseModel):
    email: List[EmailStr]


conf = ConnectionConfig(
    MAIL_USERNAME = "YourUsername",
    MAIL_PASSWORD = "strong_password",
    MAIL_FROM = "your@email.com",
    MAIL_PORT = 587,
    MAIL_SERVER = "your mail server",
    MAIL_TLS = True,
    MAIL_SSL = False,
    USE_CREDENTIALS = True,
    VALIDATE_CERTS = True
)

app = FastAPI()


html = """
<p>Thanks for using Fastapi-mail</p> 
"""


@app.post("/email")
async def simple_send(email: EmailSchema) -> JSONResponse:

    message = MessageSchema(
        subject="Fastapi-Mail module",
        recipients=email.dict().get("email"),  # List of recipients, as many as you can pass 
        body=html,
        subtype="html"
        )

    fm = FastMail(conf)
    await fm.send_message(message)
    return JSONResponse(status_code=200, content={"message": "email has been sent"})     

List of Examples

For more examples of using fastapi-mail please check example section

Contributing

Feel free to open issues and send pull requests.

Contributors ✨

Thanks goes to these wonderful people (🚧):


Sabuhi Shukurov

πŸ’¬ πŸ‘€ 🚧

Tural Muradov

πŸ“– πŸ‘€ πŸ”§

Hasan Aliyev

πŸ“– 🚧 πŸ‘€

Ashwani

🚧

Leon Xu

🚧

Gabriel Oliveira

πŸ“– 🚧

Onothoja Marho

πŸ“– 🚧 πŸ”§

Tim Kiely

🚧

Dmitriy Solodkiy

🚧

Peter Boers

🚧

James Valentine

πŸ“– 🚧 πŸ”§

Gogoku

πŸ“– 🚧 πŸ”§

Kucera-Lukas

πŸ“– 🚧 πŸ”§

LLYX

πŸ“– 🚧 πŸ”§

This project follows the all-contributors specification. Contributions of any kind are welcome!

Before you start please read CONTRIBUTING

LICENSE

MIT

About

Fastapi mail system sending mails(individual, bulk) attachments(individual, bulk)

https://sabuhish.github.io/fastapi-mail/

License:MIT License


Languages

Language:Python 92.6%Language:Shell 6.7%Language:HTML 0.7%