DEV Community

Cover image for How to Send Emails in Django: A Step-by-Step Guide
Shivam Rohilla
Shivam Rohilla

Posted on

How to Send Emails in Django: A Step-by-Step Guide

Django is a popular web framework for building web applications in Python. One of the common tasks when building web applications is sending emails. In this blog post, we will learn how to send emails in Django.

First, we need to configure the email settings in the settings.py file. We can use the built-in EmailBackend or use an external service like Gmail or Amazon SES. Here's an example of how to configure the email settings using the built-in EmailBackend:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'your_email@gmail.com'
EMAIL_HOST_PASSWORD = 'your_password'
Enter fullscreen mode Exit fullscreen mode

Once the email settings are configured, we can use the built-in send_mail function to send emails. Here's an example of how to use the send_mail function:

from django.core.mail import send_mail

send_mail(
    'Subject',
    'Here is the message.',
    'from@example.com',
    ['to@example.com'],
    fail_silently=False,
)
Enter fullscreen mode Exit fullscreen mode

The send_mail function takes five arguments:

Subject: The subject of the email.
Message: The message of the email.
From email: The email address of the sender.
List of recipient emails: A list of email addresses of the recipients.
fail_silently: A boolean value that indicates whether to raise an exception if the email fails to send.
You can also use the EmailMessage class to create more advanced emails with multiple recipients, cc, bcc, attachments and headers.

from django.core.mail import EmailMessage

email = EmailMessage(
    'Hello',
    'Body goes here',
    'from@example.com',
    ['first@example.com', 'second@example.com'],
    ['bcc@example.com'],
    reply_to=['another@example.com'],
    headers={'Message-ID': 'foo'},
)

email.send()
Enter fullscreen mode Exit fullscreen mode

That's it! With these simple steps, you can send emails in Django. You can also use other libraries like Celery to handle sending emails asynchronously.

Thank You
Shivam Rohilla | Python Developer

Top comments (0)