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_FROM_ADDRESS = 'noreply@aliasaddress.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 field 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_FROM_ADDRESS
: this can be the same as email_address or an alias address if required.EMAIL_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 EMAIL_ACTIVE_FIELD
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
Hashes for django-email-verification-0.0.7.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02ed6b47c1311a18475f11eb7d002381d13b1fba73b0ce30c3435cc887f86a3b |
|
MD5 | 29524890517cdc8f84c2ea46d9b384db |
|
BLAKE2b-256 | 15b8273bbdb4c770a326a8778688d8159e9702cb03c2b90c65bc55a68dacce97 |
Hashes for django_email_verification-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43e137f4651413620dddc3b8935e06c458ce0ffd1aeafdc0678a187b13118761 |
|
MD5 | e218382874cecfc690cb3a4bdffa0012 |
|
BLAKE2b-256 | 3eda10759d2a61284035f3c3b515b49754eed555f5f7a5179d17536461d158ab |