Sending and Testing Emails with Python

Sending emails is a common requirement in many web applications. Python offers several libraries that can be used to send emails, and FastAPI provides a convenient framework for integrating email functionality into your API. In this guide, we’ll demonstrate how to send and test emails using Python and FastAPI.

Installing Required Libraries

Before we begin, ensure you have the following libraries installed:

  • FastAPI: The web framework for building APIs
  • uvicorn: A ASGI server for running FastAPI applications
  • requests: A library for making HTTP requests
  • mailgun: A library for interacting with the Mailgun API (if using Mailgun)

Configuring Email Settings

Store your email credentials and settings in environment variables or a configuration file. For example:

Python

from dotenv import load_dotenv

load_dotenv()

EMAIL_HOST = os.getenv("EMAIL_HOST")
EMAIL_PORT = int(os.getenv("EMAIL_PORT"))
EMAIL_USER = os.getenv("EMAIL_USER")
EMAIL_PASSWORD = os.getenv("EMAIL_PASSWORD")

Sending Emails

Using the requests library, you can send emails directly:

Python

import requests

def send_email(recipient_email, subject, body):
    url = f"https://smtp.gmail.com:587"
    auth = (EMAIL_USER, EMAIL_PASSWORD)

    data = {
        "from": EMAIL_USER,
        "to": recipient_email,
        "subject": subject,
        "text": body
    }

    response = requests.post(url, auth=auth, data=data)
    response.raise_for_status()

Integrating with FastAPI

Create a FastAPI endpoint to send emails:

Python

from fastapi import APIRouter

router = APIRouter()

@router.post("/send-email")
def send_email(recipient_email: str, subject: str, body: str):
    # ... (send email logic)
    return {"message": "Email sent successfully"}

Testing Email Sending

To test email sending, you can use a sandbox email service like Mailtrap or Mailhog. Configure your email settings to send emails to the sandbox service and inspect the sent emails to verify their content.

Additional Factors

  • Email Templates: Use email templates to create consistent and visually appealing emails.
  • Attachments: You can attach files to emails using various libraries or directly in the email body.
  • Error Handling: Implement appropriate error handling to catch exceptions that might occur during email sending.
  • Security: Protect your email credentials and avoid exposing them in your code.

By following these steps, you can effectively send emails from your FastAPI application and integrate email functionality into your application’s workflows.

Sending Confirmation Emails During Registration
Configuring Mailgun for Email Integration

Get industry recognized certification – Contact us

keyboard_arrow_up
Open chat
Need help?
Hello 👋
Can we help you?