Email confirmation app for django
Project description
Django email validator
Requirements
- Python >= 3.8
- Django 3.0.7
General concept
Installation
You can install by:
pip3 install django-email-verification
and import by:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...
'django_email_verification', # you have to add this
]
Settings parameters
You have to add these parameters to the settings, you have to include all of them except the last one:
EMAIL_ACTIVE_FIELD = 'is_active'
EMAIL_SERVER = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_ADDRESS = 'mymail@gmail.com'
EMAIL_PASSWORD = 'mYC00lP4ssw0rd' # os.environ['password_key'] suggested
EMAIL_MAIL_SUBJECT = 'Confirm your email'
EMAIL_MAIL_HTML = 'mail_body.html'
EMAIL_MAIL_PLAIN = 'mail_body.txt'
EMAIL_PAGE_TEMPLATE = 'confirm_template.html'
EMAIL_PAGE_DOMAIN = 'http://mydomain.com/'
In detail:
EMAIL_ACTIVE_FIELD
: the user model filed which will be set toTrue
once the email is confirmedEMAIL_SERVER
: your mail provider's server (e.g.'smtp.gmail.com'
for gmail)EMAIL_PORT
: your mail provider's server port (e.g.587
for gmail)EMAIL_ADDRESS
: your email addressEMAIL_PASSWORD
: your email address' passwordEMAIL_MAIL_
:SUBJECT
: the mail default subject (needed)HTML
: the mail body in form of html (not needed)PLAIN
: the mail body in form of .txt file (needed ifHTML
is not defined)
EMAIL_PAGE_TEMPLATE
: the template of the success/error viewEMAIL_PAGE_DOMAIN
: the domain of the confirmation link (usually your site's domain)
Templates examples
The EMAIL_MAIL_HTML
should look like this ({{ link }}
is passed during the rendering):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
h1{ color: blue; }
</style>
</head>
<body>
<h1>You are almost there!</h1><br>
<h2>Please click <a href="{{ link }}">here</a> to confirm your account</h2>
</body>
</html>
The EMAIL_MAIL_PLAIN
should look like this ({{ link }}
is passed during the rendering):
You are almost there!
Please click the following link to confirm your account
{{ link }}
The EMAIL_PAGE_TEMPLATE
should look like this ({{ success }}
is boolean and passed during the rendering):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Confirmation</title>
<style>
body{ color: blue; }
</style>
</head>
<body>
{% if success %}
You have confirmed your account!
{% else %}
Error, invalid token!
{% endif %}
</body>
</html>
Email sending
After you have created the user you can send the confirm email
from django.shortcuts import render
from django.contrib.auth import get_user_model
from django_email_verification import sendConfirm
def myCreateView(request):
...
user = get_user_model().objects.create(username=username, password=password, email=email)
sendConfirm(user)
return render(...)
sendConfirm(user)
sets user's is_active
to False
and sends an email with the defined template (and the pseudo-random generated token) to the user.
Token verification
You have to include the urls in urls.py
from django.contrib import admin
from django.urls import path, include
from django_email_verification import urls as mail_urls
urlpatterns = [
path('admin/', admin.site.urls),
...
path('email/', include(mail_urls)),
]
When a request arrives to https.//mydomain.com/email/<base64 email>/<token>
the package verifies the token and:
- if it corresponds to a pending token it renders the
EMAIL_PAGE_TEMPLATE
passingsuccess=True
and deletes the token - if it doesn't correspond it renders the
EMAIL_PAGE_TEMPLATE
passingsuccess=False
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-email-verification-0.0.4.post1.tar.gz
.
File metadata
- Download URL: django-email-verification-0.0.4.post1.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 958794b0606b11023c80dd38bd39806144479af18b74c3eb10bb382092925d9f |
|
MD5 | ba196f56a8ba1dbdc4cc303cc4a93826 |
|
BLAKE2b-256 | 86c73b9c2dcbc8907127f430d623feeb18bbb853a62cef4c8e0f3ab12e94b2fc |
File details
Details for the file django_email_verification-0.0.4.post1-py3-none-any.whl
.
File metadata
- Download URL: django_email_verification-0.0.4.post1-py3-none-any.whl
- Upload date:
- Size: 16.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b17ab53ac608c72f548a03b1441f676723429f25c2782f239cab6d60eb4d33b1 |
|
MD5 | 426391c3ed9e7074b73628d6b741600a |
|
BLAKE2b-256 | f98cb5d592443d534b15d43fa25d91127e290fd9cfadd27cab2044cd09a015df |