An email backend is Django’s pluggable delivery component. It sends messages through a configured transport such as SMTP, or writes them somewhere useful during development. Password reset views and other Django features use the configured backend without needing to know how delivery happens. section 6.6.2 section 6.8
For local development, the console backend is usually the least troublesome option: it prints the complete message in the development server’s console instead of sending it. Configure it in settings.py: section 6.6.2
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Set EMAIL_BACKEND to django.core.mail.backends.console.EmailBackend to inspect messages locally without configuring SMTP. section 6.6.2
The same backend handles several practical email flows:
- Password reset: Django checks the submitted address, sends mail only when a matching User exists, and places a one-time link in the message. section 6.6.2
- Comment notification: after a form validates, send_mail() uses the configured backend to notify the administrator. section 7.1.1
- Failure visibility: pass fail_silently=False so delivery problems raise an exception instead of disappearing quietly. section 7.1.1
A reset email you can actually inspect
With the console backend enabled, a reset request prints a plain-text message containing the protocol, domain, password-reset URL, and username. Unlike a normal webpage link, an email needs the full protocol and domain rather than a relative URL. section 6.6.2
When the application is ready to deliver real mail, SMTP is the common backend choice. Django supports third-party email providers or a self-managed server; production configuration requires additional care. section 6.6.2
