django-mailtestfield
Drop-in replacement for Django's forms.EmailField. Uses http://mailtest.in to validate email addresses against a number of factors. Caches results and fails silently should anything go wrong.
MailTest
http://mailtest.in is a free email domain validation API. Reject email addresses from invalid domains (i.e. the domain is unregistered or has no MX records). Optionally reject disposable email addresses and monetized bounce services.
Installation
You can install django-mailtestfield with pip by typing:
pip install django-mailtestfield
Or with easy_install by typing:
easy_install django-mailtestfield
Or manually by downloading a tarball and typing:
python setup.py install
Usage
Simply import the form field and use it:
from django import forms
from mailtest.fields import EmailMailTestField
class MyForm(forms.Form):
email = EmailMailTestField()
Testing
See the dummy subdomains on the MailTest website. E.g. to test for a disposable email address response, use the email address "hello@disposable.mailtest.in".
Settings
django-mailtestfield has a few settings with sensible defaults:
MAILTEST_USE_HTTPS
Boolean, default True
: Connect to MailTest.in via HTTPS.
MAILTEST_REJECT_DISPOSABLE
Boolean, default True
: Reject disposable email addresses.
MAILTEST_REJECT_ROBOT
Boolean, default True
: Reject monetized bounce addresses.
MAILTEST_CACHE_AGE
Integer, default 86400
(24 hours): Length of time to cache results.
The message strings can also be modifed in the settings.
MAILTEST_MSG_INVALID
default "This email address is invalid"
MAILTEST_MSG_DISPOSABLE
default "Disposable email addresses are not allowed"
MAILTEST_MSG_ROBOT
default "This email address is blocked"