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 –
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