Временные электронные письма и их предотвращение с помощью django

я хочу блокировать временные адреса электронной почты и сделать так, чтобы пользователь мог зарегистрироваться, только если почта реальная (как gmail, outlook, yahoo)

forms.py

    class SginupForm(UserCreationForm):
        class Meta:
            model = User
            fields =('username', 'first_name','last_name','email','password1','password2' )
views.py

@unauthenticated_user
def signup_form(request):
    if request.method == 'POST':
        form=SginupForm(request.POST)
        if form.is_valid():
            user=form.save()
            send_action_email(user,request)
            messages.add_message(request, messages.SUCCESS,
                                 'we v sent ur activtion link')
            return redirect('core:login')


            
    else:
        form=SginupForm()
    return render(request,'user/sign-up.html',{'form':form})

Не существует автоматического способа узнать, является ли письмо временным или нет. Поэтому я бы просто использовал белый список. Просто убедитесь, что вы включили в него всех наиболее популярных поставщиков услуг электронной почты (выполните поиск в Google для этого).

Создайте список электронных писем. Для хорошей практики это должно быть константой в верхней части вашего файла views.py.

ALLOWED_EMAILS = ["gmail.com", "outlook.com", "yahoo.com"]

Затем, когда пользователь отправляет форму регистрации, просто проверьте, что адрес электронной почты адрес заканчивается любым из этих символов.

Приведенное ниже условие проверяет, не заканчивается ли письмо ни одним из белых списков. Добавьте его сразу после того, как пользователь отправит форму. Добавьте свое собственное сообщение и логику перенаправления.

email = form.cleaned_data.get("email")
if not any(email.endswith(e) for e in ALLOWED_EMAILS):
    # Add a failure message to the request.
    # Redirect back to the login page.
Вернуться на верх