'Django send_mail not working - No email delivered

When the view that sends the email is used nothing happens, i then entered send_mail(...) into the python shell and it returned 1 but i didn't receive any emails.

This is my settings.py

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

This is the view:

def send_email(request):
    send_mail('Request Callback', 'Here is the message.', '[email protected]',
        ['[email protected]'], fail_silently=False)
    return HttpResponseRedirect('/')


Solution 1:[1]

Adjust your settings thus:

DEFAULT_FROM_EMAIL = '[email protected]'
SERVER_EMAIL = '[email protected]'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'P@ssw0rd5'

Adjust your code:

from django.core.mail import EmailMessage

def send_email(request):
    msg = EmailMessage('Request Callback',
                       'Here is the message.', to=['[email protected]'])
    msg.send()
    return HttpResponseRedirect('/')

Solution 2:[2]

Google now provides a method to generate a password that you can use for applications that need to relay mail. its different from the password that you would use to login through webmail.

Sign in to Google and start using App Passwords. This allows you to use a 16 digit password to access google services including ability to send out email. Refer below

https://support.google.com/accounts/answer/185833?hl=en

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Burhan Khalid
Solution 2