Skip to main content

Simple lightwigh mail sending for FastApi

Project description

Fastapi-mail

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

Installation

 $ pip install fastapi-mail

notes

In order to run the Application use comand below

uvicorn test_examples.main:app --reload  --port 8001

Standart email sending example

from fastapi import FastAPI, BackgroundTasks
from starlette.responses import JSONResponse
from fastapi_mail import FastMail
from fastapi import Header,File, Body,Query, UploadFile
from test_examples.schema import  EmailSchema
from pydantic import BaseModel,EmailStr

app = FastAPI()

mail = FastMail(email="your_account@gmail.com",password="your_pass",tls=True,port="587")

html = """
<html> 
<body>
<p>Hi This test mail,
<br>Thanks for using Fastapi-mail</p> 
<p> Feel free to <strong>let us</strong> know in case of bug</p> 
</body> 
</html>
"""

template = """
<html> 
<body>
<p>Hi This test mail using BackgroundTasks
<br>Thanks for using Fastapi-mail</p> 
<p> Feel free to <strong>let us</strong> know in case of bug</p> 
</body> 
</html>
"""


class EmailSchema(BaseModel):
    email: EmailStr



@app.post("/email")
async def awesome_fastapi_func_1(email: EmailSchema) -> JSONResponse:
    #as gmail requires TLS connection, therefore you require to set tls to True

    await  mail.send_message(recipient=email.email,subject="Test email from fastapi-mail", body=html, text_format="html")

    return JSONResponse(status_code=200, content={"message": f"email has been sent {email.email} address"})



# uvicorn test_examples.main:app --reload  --port 8001

Sending email as background task

@app.post("/emailbackground")
async def awesome_fastapi_func_2(background_tasks: BackgroundTasks,email: str = Body(...,embed=True)) -> JSONResponse:

    #this mail sending using fastapi background tasks, faster than the above one
    #Using Postman you can send post request, adding email in the body

    {
        "email": "recipient@gmail.com"
    }

    #https://fastapi.tiangolo.com/tutorial/background-tasks/



    background_tasks.add_task(mail.send_message, recipient=email,subject="testing HTML",body=template,text_format="html")


    return JSONResponse(status_code=200, 
                        content={"message": f"email has been sent {email} address"})

Sending bulk mail

@app.post("/bulkemail")
async def awesome_fastapi_func_3(background_tasks: BackgroundTasks,emails: str=Body(...,embed=True)) -> JSONResponse:

    #this an example of sending bulk mails
    #Using Postman you can send post request, adding email in the body
    #example below
    {
        "emails": ["recipient1@gmail.com","recipient2@gmail.com"]
    }

    background_tasks.add_task(mail.send_message,recipient=[email1,email2],subject="Bulk mail from fastapi-mail with background task",body="Bulk mail Test",text_format="plain",bulk=True)


    return JSONResponse(status_code=200, content={"message": f"email has been sent to these {email1,email2} addresses"})

Sending bulk mails && files

@app.post("/bulkfile")
async def awesome_fastapi_func_4(background_tasks: BackgroundTasks,request: Request) -> JSONResponse:

    #this example of sending bulk email and sending multiple file

    temp = await  request.form()
    files= []

    for  value in temp.values():
        files.append(value)


    email = ["account_1@gmail.com","account_2@gmail.com"]
    mail = FastMail("******@gmail.com","******",tls=True)

    background_tasks.add_task(mail.send_message, recipient=email,subject="Bulk mail from fastapi-mail with background task",body="Bulk mail Test",text_format="plain",bulk=True,file=files)


    return JSONResponse(status_code=200, content={"message": f"email has been sent to these {email} addresses"})

Contributing

Fell free to open issue and send pull request.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi-mail-0.2.1.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

fastapi_mail-0.2.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file fastapi-mail-0.2.1.tar.gz.

File metadata

  • Download URL: fastapi-mail-0.2.1.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.3

File hashes

Hashes for fastapi-mail-0.2.1.tar.gz
Algorithm Hash digest
SHA256 60f18903118f070a483cd14238e33e52cdaae50d0ef2cedd81318cf8c0fed8d2
MD5 cea9c507d1507ffc091aba82ea1e698b
BLAKE2b-256 c14cfda701b072275db58f470855e68ae4653d99f81117e30056215db732a1e3

See more details on using hashes here.

File details

Details for the file fastapi_mail-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: fastapi_mail-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.3

File hashes

Hashes for fastapi_mail-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e8878443d6542831672fbf845a474522f8be6d33540a9ad4ec57615286a76c38
MD5 84c5df9c9f5837b770d4a0e52617d700
BLAKE2b-256 0f490c0dee82535bda43674484dfa1b4e3887918437fe45b411ce6b6ea3deecc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page