Email Verification

ইমেইল ভেরিফিকেশন বেশিরভাগ সময় ইউজার রেজিস্ট্রেশন এর সময় এবং পাসওয়ার্ড রিসেট এর সময় ইমেইল ভেরিফিকেশন এর দরকার হয়

settings.py

#gmail_send/settings.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'olee.techs@gmail.com'
EMAIL_HOST_PASSWORD = 'jzsbfkxvmxiabwow' #past the key or password app here
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'from oleetech'

ইউজার রেজিস্ট্রেশন এর সময়

forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class RegistrationForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

views.py

from django.contrib.auth.models import User
from django.urls import reverse
from django.core.mail import send_mail
from django.contrib.auth.tokens import default_token_generator
from django.shortcuts import render, redirect
from .forms import RegistrationForm
from django.template.loader import render_to_string


def register(request):
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            # create user object
            user = form.save()

            # generate token and send email
            token = default_token_generator.make_token(user)
            subject = 'Verify your email address'
            message = render_to_string('verify_email.html', {
                'user': user,
                'token': token,
                'url': request.build_absolute_uri(reverse('verify_email', args=[token]))
            })
            send_mail(subject, message, None, [user.email], fail_silently=False)

           
            return redirect(reverse('index'))
    else:
        form = RegistrationForm()
    return render(request, 'registration.html', {'form': form})



def verify_email(request, token):
    try:
        user = User.objects.get(pk=default_token_generator.check_token(token))
        user.is_active = True
        user.save()
        return redirect(reverse('index'))
    except User.DoesNotExist:
        return redirect(reverse('register'))

Templates

#verify_email.html
<p>Hi {{ user.username }},</p>
<p>Please click the link below to verify your email address:</p>
<p><a href="{{ url }}">{{ url }}</a></p>
<p>Thank you for registering!</p>


#registration.html
<h2>Register</h2>
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Register</button>
</form>

urls.py


from django.urls import path
from . import views
urlpatterns = [
    path('',views.index,name='index'),
    path('/register', views.register, name='register'),
    path('verify-email/<str:token>/', views.verify_email, name='verify_email'),
]

Last updated