Python Django异常类型:服务器上的SMTPAuthenticationError

Python Django异常类型:服务器上的SMTPAuthenticationError,python,django,Python,Django,我想在我的网站上注册 接收错误 申请方式:邮寄 请求URL: Django版本:2.1.1 异常类型:SMTPAuthenticationError 异常值: (534,b'5.7.14请\n5.7.14通过web浏览器登录,然后重试。\n5.7.14有关详细信息,请访问\n5.7.14 t24sm267392edc.56-gsmtp') 注册在本地主机上正常工作 我应该做什么来修复错误? 我应该使用什么主机和端口? 我认为我应该更改utilities.py变量 host = "http://l

我想在我的网站上注册

接收错误

申请方式:邮寄 请求URL:

Django版本:2.1.1

异常类型:SMTPAuthenticationError

异常值:
(534,b'5.7.14请\n5.7.14通过web浏览器登录,然后重试。\n5.7.14有关详细信息,请访问\n5.7.14 t24sm267392edc.56-gsmtp')

注册在本地主机上正常工作

我应该做什么来修复错误? 我应该使用什么主机和端口? 我认为我应该更改utilities.py变量

host = "http://localhost:8001"
此外,收到来自谷歌的消息:

警告:Google阻止了使用您的密码登录您帐户的可疑尝试

设置.py

DEBUG = True

ALLOWED_HOSTS = [
    '193.124.206.34',
    '2a00:f940:2:4:2::fea',
    '193-124-206-34.cloudvps.regruhosting.ru',
    '127.0.0.1',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
AUTH_USER_MODEL = 'vacancy_list.AdvUser'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'alekmosk25@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
DEFAULT_FROM_EMAIL = 'Alex'
DEFAULT_TO_EMAIL = '****@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
...
from .utilities import send_activation_notification


user_registrated = Signal(providing_args=['instance'])


def user_registrated_dispatcher(sender, **kwargs):
    send_activation_notification(kwargs['instance'])


user_registrated.connect(user_registrated_dispatcher)
...
signer = Signer()

def send_activation_notification(user):
    if ALLOWED_HOSTS:
        #host = "http://" + ALLOWED_HOSTS[0]
        host = "http://localhost:8001"
    else:
        host = "http://localhost:8001"
    context = {'user': user, 'host': host,
               'sign': signer.sign(user.username)}
    subject = render_to_string('vacancy_list/activation_letter_subject.txt',
                               context)
    body_text = render_to_string('vacancy_list/activation_letter_body.txt', context)
    user.email_user(subject, body_text)
class RegisterUserForm(forms.ModelForm):
    email = forms.EmailField(required=True, label="Email")
    password1 = forms.CharField(label="Password1", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())
    password2 = forms.CharField(label="Password2", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())

    def clean_password1(self):
        password1 = self.cleaned_data['password1']
        if password1:
            password_validation.validate_password(password1)
        return password1

    def clean(self):
        super().clean()
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            errors = {'password2': ValidationError('Введённые пароли не совпадают', code='password_mismatch')}
            raise ValidationError(errors)
        else:
            return self.cleaned_data


    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        user.is_active = False
        user.is_activated = False
        if commit:
            user.save()
        user_registrated.send(RegisterUserForm, instance=user)
        return user

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'send_messages')
class RegisterUserView(CreateView):
    model = AdvUser
    template_name = 'vacancy_list/register_user.html'
    form_class = RegisterUserForm
    success_url = reverse_lazy('register_done')


class RegisterDoneView(TemplateView):
    template_name = "vacancy_list/register_done.html"


def user_activate(request, sign):
    try:
        username = signer.unsign(sign)
    except:
        return render(request, 'vacancy_list/bad_signature.html')
    user = get_object_or_404(AdvUser, username=username)
    if user.is_activated:
        template = 'vacancy_list/user_is_activated.html'
    else:
        template = 'vacancy_list/activation_done.html'
        user.is_active = True
        user.is_activated = True
        user.save()
    return render(request, template)
型号.py

DEBUG = True

ALLOWED_HOSTS = [
    '193.124.206.34',
    '2a00:f940:2:4:2::fea',
    '193-124-206-34.cloudvps.regruhosting.ru',
    '127.0.0.1',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
AUTH_USER_MODEL = 'vacancy_list.AdvUser'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'alekmosk25@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
DEFAULT_FROM_EMAIL = 'Alex'
DEFAULT_TO_EMAIL = '****@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
...
from .utilities import send_activation_notification


user_registrated = Signal(providing_args=['instance'])


def user_registrated_dispatcher(sender, **kwargs):
    send_activation_notification(kwargs['instance'])


user_registrated.connect(user_registrated_dispatcher)
...
signer = Signer()

def send_activation_notification(user):
    if ALLOWED_HOSTS:
        #host = "http://" + ALLOWED_HOSTS[0]
        host = "http://localhost:8001"
    else:
        host = "http://localhost:8001"
    context = {'user': user, 'host': host,
               'sign': signer.sign(user.username)}
    subject = render_to_string('vacancy_list/activation_letter_subject.txt',
                               context)
    body_text = render_to_string('vacancy_list/activation_letter_body.txt', context)
    user.email_user(subject, body_text)
class RegisterUserForm(forms.ModelForm):
    email = forms.EmailField(required=True, label="Email")
    password1 = forms.CharField(label="Password1", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())
    password2 = forms.CharField(label="Password2", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())

    def clean_password1(self):
        password1 = self.cleaned_data['password1']
        if password1:
            password_validation.validate_password(password1)
        return password1

    def clean(self):
        super().clean()
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            errors = {'password2': ValidationError('Введённые пароли не совпадают', code='password_mismatch')}
            raise ValidationError(errors)
        else:
            return self.cleaned_data


    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        user.is_active = False
        user.is_activated = False
        if commit:
            user.save()
        user_registrated.send(RegisterUserForm, instance=user)
        return user

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'send_messages')
class RegisterUserView(CreateView):
    model = AdvUser
    template_name = 'vacancy_list/register_user.html'
    form_class = RegisterUserForm
    success_url = reverse_lazy('register_done')


class RegisterDoneView(TemplateView):
    template_name = "vacancy_list/register_done.html"


def user_activate(request, sign):
    try:
        username = signer.unsign(sign)
    except:
        return render(request, 'vacancy_list/bad_signature.html')
    user = get_object_or_404(AdvUser, username=username)
    if user.is_activated:
        template = 'vacancy_list/user_is_activated.html'
    else:
        template = 'vacancy_list/activation_done.html'
        user.is_active = True
        user.is_activated = True
        user.save()
    return render(request, template)
实用程序.py

DEBUG = True

ALLOWED_HOSTS = [
    '193.124.206.34',
    '2a00:f940:2:4:2::fea',
    '193-124-206-34.cloudvps.regruhosting.ru',
    '127.0.0.1',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
AUTH_USER_MODEL = 'vacancy_list.AdvUser'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'alekmosk25@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
DEFAULT_FROM_EMAIL = 'Alex'
DEFAULT_TO_EMAIL = '****@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
...
from .utilities import send_activation_notification


user_registrated = Signal(providing_args=['instance'])


def user_registrated_dispatcher(sender, **kwargs):
    send_activation_notification(kwargs['instance'])


user_registrated.connect(user_registrated_dispatcher)
...
signer = Signer()

def send_activation_notification(user):
    if ALLOWED_HOSTS:
        #host = "http://" + ALLOWED_HOSTS[0]
        host = "http://localhost:8001"
    else:
        host = "http://localhost:8001"
    context = {'user': user, 'host': host,
               'sign': signer.sign(user.username)}
    subject = render_to_string('vacancy_list/activation_letter_subject.txt',
                               context)
    body_text = render_to_string('vacancy_list/activation_letter_body.txt', context)
    user.email_user(subject, body_text)
class RegisterUserForm(forms.ModelForm):
    email = forms.EmailField(required=True, label="Email")
    password1 = forms.CharField(label="Password1", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())
    password2 = forms.CharField(label="Password2", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())

    def clean_password1(self):
        password1 = self.cleaned_data['password1']
        if password1:
            password_validation.validate_password(password1)
        return password1

    def clean(self):
        super().clean()
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            errors = {'password2': ValidationError('Введённые пароли не совпадают', code='password_mismatch')}
            raise ValidationError(errors)
        else:
            return self.cleaned_data


    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        user.is_active = False
        user.is_activated = False
        if commit:
            user.save()
        user_registrated.send(RegisterUserForm, instance=user)
        return user

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'send_messages')
class RegisterUserView(CreateView):
    model = AdvUser
    template_name = 'vacancy_list/register_user.html'
    form_class = RegisterUserForm
    success_url = reverse_lazy('register_done')


class RegisterDoneView(TemplateView):
    template_name = "vacancy_list/register_done.html"


def user_activate(request, sign):
    try:
        username = signer.unsign(sign)
    except:
        return render(request, 'vacancy_list/bad_signature.html')
    user = get_object_or_404(AdvUser, username=username)
    if user.is_activated:
        template = 'vacancy_list/user_is_activated.html'
    else:
        template = 'vacancy_list/activation_done.html'
        user.is_active = True
        user.is_activated = True
        user.save()
    return render(request, template)
forms.py

DEBUG = True

ALLOWED_HOSTS = [
    '193.124.206.34',
    '2a00:f940:2:4:2::fea',
    '193-124-206-34.cloudvps.regruhosting.ru',
    '127.0.0.1',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
AUTH_USER_MODEL = 'vacancy_list.AdvUser'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'alekmosk25@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
DEFAULT_FROM_EMAIL = 'Alex'
DEFAULT_TO_EMAIL = '****@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
...
from .utilities import send_activation_notification


user_registrated = Signal(providing_args=['instance'])


def user_registrated_dispatcher(sender, **kwargs):
    send_activation_notification(kwargs['instance'])


user_registrated.connect(user_registrated_dispatcher)
...
signer = Signer()

def send_activation_notification(user):
    if ALLOWED_HOSTS:
        #host = "http://" + ALLOWED_HOSTS[0]
        host = "http://localhost:8001"
    else:
        host = "http://localhost:8001"
    context = {'user': user, 'host': host,
               'sign': signer.sign(user.username)}
    subject = render_to_string('vacancy_list/activation_letter_subject.txt',
                               context)
    body_text = render_to_string('vacancy_list/activation_letter_body.txt', context)
    user.email_user(subject, body_text)
class RegisterUserForm(forms.ModelForm):
    email = forms.EmailField(required=True, label="Email")
    password1 = forms.CharField(label="Password1", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())
    password2 = forms.CharField(label="Password2", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())

    def clean_password1(self):
        password1 = self.cleaned_data['password1']
        if password1:
            password_validation.validate_password(password1)
        return password1

    def clean(self):
        super().clean()
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            errors = {'password2': ValidationError('Введённые пароли не совпадают', code='password_mismatch')}
            raise ValidationError(errors)
        else:
            return self.cleaned_data


    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        user.is_active = False
        user.is_activated = False
        if commit:
            user.save()
        user_registrated.send(RegisterUserForm, instance=user)
        return user

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'send_messages')
class RegisterUserView(CreateView):
    model = AdvUser
    template_name = 'vacancy_list/register_user.html'
    form_class = RegisterUserForm
    success_url = reverse_lazy('register_done')


class RegisterDoneView(TemplateView):
    template_name = "vacancy_list/register_done.html"


def user_activate(request, sign):
    try:
        username = signer.unsign(sign)
    except:
        return render(request, 'vacancy_list/bad_signature.html')
    user = get_object_or_404(AdvUser, username=username)
    if user.is_activated:
        template = 'vacancy_list/user_is_activated.html'
    else:
        template = 'vacancy_list/activation_done.html'
        user.is_active = True
        user.is_activated = True
        user.save()
    return render(request, template)
视图.py

DEBUG = True

ALLOWED_HOSTS = [
    '193.124.206.34',
    '2a00:f940:2:4:2::fea',
    '193-124-206-34.cloudvps.regruhosting.ru',
    '127.0.0.1',
]

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
AUTH_USER_MODEL = 'vacancy_list.AdvUser'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'alekmosk25@gmail.com'
EMAIL_HOST_PASSWORD = '*****'
DEFAULT_FROM_EMAIL = 'Alex'
DEFAULT_TO_EMAIL = '****@gmail.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
...
from .utilities import send_activation_notification


user_registrated = Signal(providing_args=['instance'])


def user_registrated_dispatcher(sender, **kwargs):
    send_activation_notification(kwargs['instance'])


user_registrated.connect(user_registrated_dispatcher)
...
signer = Signer()

def send_activation_notification(user):
    if ALLOWED_HOSTS:
        #host = "http://" + ALLOWED_HOSTS[0]
        host = "http://localhost:8001"
    else:
        host = "http://localhost:8001"
    context = {'user': user, 'host': host,
               'sign': signer.sign(user.username)}
    subject = render_to_string('vacancy_list/activation_letter_subject.txt',
                               context)
    body_text = render_to_string('vacancy_list/activation_letter_body.txt', context)
    user.email_user(subject, body_text)
class RegisterUserForm(forms.ModelForm):
    email = forms.EmailField(required=True, label="Email")
    password1 = forms.CharField(label="Password1", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())
    password2 = forms.CharField(label="Password2", widget=PasswordInput,
                                help_text=password_validation.password_validators_help_text_html())

    def clean_password1(self):
        password1 = self.cleaned_data['password1']
        if password1:
            password_validation.validate_password(password1)
        return password1

    def clean(self):
        super().clean()
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            errors = {'password2': ValidationError('Введённые пароли не совпадают', code='password_mismatch')}
            raise ValidationError(errors)
        else:
            return self.cleaned_data


    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        user.is_active = False
        user.is_activated = False
        if commit:
            user.save()
        user_registrated.send(RegisterUserForm, instance=user)
        return user

    class Meta:
        model = AdvUser
        fields = ('username', 'email', 'password1', 'password2', 'send_messages')
class RegisterUserView(CreateView):
    model = AdvUser
    template_name = 'vacancy_list/register_user.html'
    form_class = RegisterUserForm
    success_url = reverse_lazy('register_done')


class RegisterDoneView(TemplateView):
    template_name = "vacancy_list/register_done.html"


def user_activate(request, sign):
    try:
        username = signer.unsign(sign)
    except:
        return render(request, 'vacancy_list/bad_signature.html')
    user = get_object_or_404(AdvUser, username=username)
    if user.is_activated:
        template = 'vacancy_list/user_is_activated.html'
    else:
        template = 'vacancy_list/activation_done.html'
        user.is_active = True
        user.is_activated = True
        user.save()
    return render(request, template)

请检查变量的值,用户和密码是否正确。电子邮件\u主机\u用户=alekmosk25@gmail.com'EMAIL_HOST_PASSWORD='******'电子邮件和密码正确。我认为主机和端口的问题(目前我正在使用localhost)我不知道应该指定哪个端口和主机
EMAIL\u-host
EMAIL\u-port
是正确的,这里的问题不是
host
。让Django使用Django发送电子邮件是很棘手的。如果搜索堆栈溢出,您将看到许多类似的问题。我建议您使用不同的电子邮件提供商。一种选择是将事务性邮件提供程序用于。如果您确实想使用gmail,请按照错误中的说明操作:
通过web浏览器登录,然后重试。然后检查堆栈溢出和其他答案。请检查变量的值,用户和密码是否正确。电子邮件\u主机\u用户=alekmosk25@gmail.com'EMAIL_HOST_PASSWORD='******'电子邮件和密码正确。我认为主机和端口的问题(目前我正在使用localhost)我不知道应该指定哪个端口和主机
EMAIL\u-host
EMAIL\u-port
是正确的,这里的问题不是
host
。让Django使用Django发送电子邮件是很棘手的。如果搜索堆栈溢出,您将看到许多类似的问题。我建议您使用不同的电子邮件提供商。一种选择是将事务性邮件提供程序用于。如果您确实想使用gmail,请按照错误中的说明操作:
通过web浏览器登录,然后重试。然后检查堆栈溢出和其他答案。