Omonbude Emmanuel
Software Engineer
HTML/CSS/JAVASCRIPT
PYTHON
DJANGO/DJANGO REST FRAMEWORK
NODE JS
DOCKER, AWS, KUBERNATES
FIREBASE, PostgreSQL, MySQL,Mongo DB
FLUTTER
DART
ANGULAR
TYPESCRIPT

Sending SMTP emails with django

Omonbude Emmanuel | May 25, 2023, 12:50 p.m.

79

Introduction

Email communication is a crucial feature for many web applications, whether it's for user registration, password resets, or notifications. Django, a high-level Python web framework, provides built-in support for sending emails via SMTP. In this guide, we'll walk you through the process of setting up and sending emails using Django's SMTP backend.

Prerequisites

Before we get started, ensure you have the following prerequisites:

  1. Python and Django Installed: Ensure you have Python and Django installed on your machine. You can check the versions by running python --version and django-admin --version respectively.
  2. SMTP Server: Access to an SMTP server. 
  3. Basic Django Project: A basic Django project set up. If you don't have one, you can create it using:
    django-admin startproject myproject 
    cd myproject 

Steps

1. Configure SMTP Settings

First, you need to configure Django to use the SMTP server for sending emails. Open your project's settings.py file and add the following email configuration:

 

# settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
MAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587 EMAIL_USE_TLS = True
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'your_email_password'

 

Replace [email protected] and your_email_password with your Gmail address and password. If you are using another email service provider, adjust the EMAIL_HOST and EMAIL_PORT accordingly.

2. Create a View to Send Emails

Next, create a Django view that will handle sending the email. Open or create a file in your app directory (e.g., views.py), and add the following code:

 

# views.py

from django.core.mail import send_mail
from django.http import HttpResponse
def send_test_email(request):
    subject = 'Test Email from Django'
    message = 'This is a test email sent from Django.'
    from_email = '[email protected]'
    recipient_list = ['[email protected]']
    send_mail(subject, message, from_email, recipient_list)
    return HttpResponse('Email sent successfully!')  

         

Replace '[email protected]' with your sender email and '[email protected]' with the recipient's email address.

3. Create a URL for the View

To access the view, you need to create a URL route. Open your app's urls.py file and add the following code:

# urls.py 
from django.urls import path
from .views import send_test_email 
urlpatterns = [ path('send-email/', send_test_email, name='send_email'), ] 

4. Test Sending the Email

Start the Django development server:

python manage.py runserver 

 

Navigate to http://127.0.0.1:8000/send-email/ in your web browser. If everything is set up correctly, you should see a message saying "Email sent successfully!" and an email should arrive in the recipient's inbox.

Conclusion

Sending emails via SMTP with Django is a straightforward process, thanks to Django's robust email handling framework. By configuring your SMTP settings in settings.py and creating views to send emails, you can integrate email functionality into your Django applications with ease. Whether you’re sending notifications, confirmations, or marketing emails, Django provides a flexible and powerful way to manage email communication.

 

© 2024 Omonbude Emmanuel

Omonbude Emmanuel