Sending Emails with SendGrid in Django Rest Framework: A Complete Tutorial

Osirus Djodji
2 min readJul 12, 2023

In this tutorial, we’ll explore how to integrate SendGrid, a popular email delivery service, with Django Rest Framework (DRF). We’ll cover installing the necessary packages, setting up SendGrid in your Django project, and testing the email sending functionality. By the end of this tutorial, you will clearly understand how to send email using SendGrid in your Django Rest Framework application.

Installation

To get started, let’s install the required packages:

pip install django-sendgrid-v5

SendGrid API key configuration:

- Create a SendGrid account if you haven’t already.
- Once logged in, navigate to the SendGrid dashboard.
- Go to Settings > API Keys.
- Click on the “Create an API key” button.
- Give your API key a name and give it full access to Mail Send.
- Click “Create and view” to generate the API key.
- Note the generated API key as we will need it later.

Django settings

Open your Django project and navigate to the project settings file (settings.py)
Add 'sendgrid' to the INSTALLED_APPS list.
Configure the SendGrid API key in your settings:

SENDGRID_API_KEY = 'YOUR_SENDGRID_API_KEY'

Replace 'YOUR_SENDGRID_API_KEY' with the actual API key you obtained in the previous step.

Sending Emails

  • Create a new file utils.py in your Django app directory.
  • Import the necessary modules:
from django.conf import settings
from sendgrid import SendGridAPIClient
from sendgrid.helpers.mail import Mail
  • Define a function for sending emails:
def send_email(to_email, subject, html_content):
message = Mail(
from_email=settings.DEFAULT_FROM_EMAIL,
to_emails=to_email,
subject=subject,
html_content=html_content
)
try:
sg = SendGridAPIClient(settings.SENDGRID_API_KEY)
response = sg.send(message)
return response.status_code
except Exception as e:
return str(e)

Testing the Email Sending Functionality:

  • Open the file where you want to test the email sending functionality (e.g., views.py).
  • Import the send_email function from utils.py:
from .utils import send_email

Use the send_email function to send an email:

def send_test_email(request):
to_email = 'recipient@example.com'
subject = 'Test Email'
html_content = '<p>Hello, this is a test email!</p>'
response = send_email(to_email, subject, html_content)
if response == 202:
return HttpResponse('Email sent successfully!')
else:
return HttpResponse('Failed to send email.')

In this tutorial, we covered the step-by-step process of integrating SendGrid with Django Rest Framework to send emails. We installed the necessary packages, set up the SendGrid API key, configured Django, and tested the email sending functionality. You can now leverage the power of SendGrid to send transactional emails from your Django Rest Framework application.

Remember to handle exceptions and implement proper error handling in your production code. For advanced features like email templates and attachments, refer to the SendGrid documentation.

Happy coding!

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

No responses yet

Write a response