Envío de correo electrónico utilizando FastAPI Framework en Python

Antes de entrar directamente en el tema, hagamos una pequeña introducción sobre las tecnologías que vamos a utilizar. Como sugiere el nombre, usaremos FastAPI, un marco de lenguaje Python.

API rápida :

FastAPI es un marco de Python para desarrollar REST Apis. Es muy fácil de construir, de alto rendimiento, fácil de aprender y listo para implementar código. Aunque estamos usando FastAPI, explicarlo estaría fuera del alcance del artículo actual. Para obtener más detalles sobre FastAPI, consulte los recursos a continuación.

Documentación oficial – https://fastapi.tiangolo.com/ para 

Tutorial para usar Fast API en Python: https://www.geeksforgeeks.org/creating-first-rest-api-with-fastapi/

En el artículo actual, cubriremos cómo enviar un correo electrónico utilizando el marco FastAPI. Enviaremos el correo utilizando una biblioteca de correo API rápida. Fastapi-mail sencillo sistema de correo ligero, envío de correos electrónicos y archivos adjuntos.

Instalación 

Puede instalar la biblioteca usando 

pip install fastapi-mail

Podemos usar el siguiente artículo con y sin autenticación de inicio de sesión. No usaremos ningún proceso de registro/autenticación ya que está fuera del alcance del artículo actual.

Crear el proyecto 

Importe las bibliotecas requeridas para enviar un correo electrónico

from fastapi import FastAPI
from fastapi_mail import FastMail, MessageSchema,ConnectionConfig
from starlette.requests import Request
from starlette.responses import JSONResponse
from pydantic import EmailStr, BaseModel
from typing import List
app = FastAPI()

Ahora cree una clase pedante para tomar el correo electrónico como entrada.
Pedantic es un módulo que nos ayuda a escribir validaciones a las entradas/requests.

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

Configure la configuración para enviar un correo electrónico usando ConnectionConfig

conf = ConnectionConfig(
   MAIL_USERNAME=from_,
   MAIL_PASSWORD="************",
   MAIL_PORT=587,
   MAIL_SERVER="smtp.gmail.com",
   MAIL_TLS=True,
   MAIL_SSL=False
)

Para el argumento MAIL_SERVER,

si desea utilizar Gmail, puede proporcionar «smtp.gmail.com» como entrada.

Si desea utilizar Outlook como remitente, puede proporcionar «smtp.office365.com» como entrada

Configuremos el esquema del mensaje.

Contiene argumentos como qué enviar y a quién enviar.

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

Después de definir la configuración y MessageSchema,

podemos enviar el correo electrónico.

fm = FastMail(conf)
await fm.send_message(message)

Solicitud final 

Todo el código se ve así,

Python3

@app.post("/send_mail")
async def send_mail(email: EmailSchema):
 
    template = """
        <html>
        <body>
         
 
<p>Hi !!!
        <br>Thanks for using fastapi mail, keep using it..!!!</p>
 
 
        </body>
        </html>
        """
 
    message = MessageSchema(
        subject="Fastapi-Mail module",
        recipients=email.dict().get("email"),  # List of recipients, as many as you can pass
        body=template,
        subtype="html"
        )
 
    fm = FastMail(conf)
    await fm.send_message(message)
        print(message)
 
     
 
    return JSONResponse(status_code=200, content={"message": "email has been sent"})

Y finalmente,

inicie la aplicación usando

uvicorn main:app --reload

Después del inicio exitoso del servidor, use el siguiente enlace para buscar la lista de API. En nuestro caso, solo tendremos una API de envío de correo (una solicitud POST) cuando pueda ingresar información directamente desde la página de documentos.

http://127.0.0.1:8000/docs

Producción – 

página de documentos después del inicio exitoso del servidor

Ahora ejecute la API haciendo clic en probarla e ingresando el correo electrónico deseado como se muestra a continuación.
 

Una vez que se ejecuta la API, devolverá el resultado de éxito como se menciona en la declaración de devolución de la API.

"message": "email has been sent"

Y finalmente, la salida en la terminal,

devuelve el código de estado (200), si el correo se envía correctamente. 

El resultado que muestra es la plantilla que estamos enviando por correo electrónico.

Incluso puede enviar el correo con archivos adjuntos, etc. Consulte la documentación del mismo: https://pypi.org/project/fastapi-mail/

Publicación traducida automáticamente

Artículo escrito por krishna krish y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *