django、smtp写的密码或名字不正确,但名字和密码正确

问题描述 投票:0回答:1

我有 djnago 应用程序

当我尝试启动它时 控制台smtp写入错误,名称和密码不正确,但是名称和密码是正确的!

这是我的观点.py 最后一个函数“SendEmailView”使用 utils.py 中的函数

from django.shortcuts import render, redirect
from django.views.generic import TemplateView
from django.contrib.messages.views import SuccessMessageMixin
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.contrib import messages
from .models import Contact
from django.urls import reverse
from django.core.validators import validate_email
from django.core.exceptions import ValidationError
from django.core.mail import send_mail
from django.http import JsonResponse
from django.contrib.auth.mixins import LoginRequiredMixin
from .utils import SendEmail


####################################################

class MainView(TemplateView):
    template_name = 'emnosys/main.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['css_file'] = 'styles.css'
        return context

###################################################



def RegistrationView(request):
    if request.method == "POST":
        username = request.POST['username']
        email = request.POST['email']
        password1 = request.POST['password1']

        myuser = User.objects.create_user(username, email, password1)
        myuser.save()

        return redirect('signin')
    return render(request, "emnosys/registration.html")

###############################################

def SigninView(request):

    if request.method == 'POST':
        username = request.POST['username']
        password1 = request.POST['pass1']

        user = authenticate(username=username, password=password1)

        if user is not None:
            login(request, user)
            return render(request, "emnosys/main.html")
        else:
            return redirect('signin')
    return render(request, "emnosys/signin.html")

################################################

def SignoutView(request):
    logout(request)
    return redirect('home')

######################################################

class PersonalPageView(TemplateView):
    template_name = 'emnosys/personalpage.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['css_file'] = 'styles.css'
        return context

####################################################

@login_required
def ContactCreateView(request):
    if request.method == 'POST':
        username = request.POST.get('about--username')
        message = request.POST.get('about--textarea')
        email = request.POST.get('about--email')
        if not all([username, message, email]):
            return render(request, 'emnosys/addcontacts.html')
        try:
            validate_email(email)
        except ValidationError:
            return render(request, 'emnosys/addcontacts.html')
        contact = Contact(username=username, message=message, email=email, contactowner=request.user)
        contact.save()
        return HttpResponseRedirect(reverse('personalpage'))
    return render(request, 'emnosys/addcontacts.html')


##################################


def SendEmailView(request):
    SendEmail()
    return redirect('/')

这是我的utils.py

from django.conf import settings
from emnosys.models import Contact
from django.core.mail import send_mass_mail, EmailMessage

message1 = EmailMessage(
    "Subject here",
    "Here is the message",
    "[email protected]",
    ["[email protected]"],
)

message_tuple = ((message1.subject, message1.body, message1.from_email, message1.to),)

send_mass_mail(message_tuple, fail_silently=False)

这是我的设置


from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-++z-#m#q&_)yx%0j5uyros^t55glb480!!ys7g$2@qmi-8u@x#'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'emnosys'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'emnosys_wqrfl.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'emnosys_wqrfl.wsgi.application'


# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'emnosysdb',
        'USER': 'postgres',
        'PASSWORD': '123123',
        'PORT': '5432'
    }
}


# Password validation
# https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/3.2/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/

STATIC_URL = '/static/'

# Default primary key field type
# https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'


EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST_USER = "[email protected]"
EMAIL_HOST_PASSWORD = "*here is correct password*"

当我尝试启动 django 应用程序时,我看到该错误


(venv) PS D:\projects\EmNoSy> cd venv
(venv) PS D:\projects\EmNoSy\venv> cd emnosys_wqrfl
(venv) PS D:\projects\EmNoSy\venv\emnosys_wqrfl> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
threading.py", line 926, in _bootstrap_inner
    self.run()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\management\commands\runserver.py", line 118, 
in inner_run
    self.check(display_num_errors=True)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\management\base.py", line 423, in check      
    databases=databases,
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\checks\registry.py", line 76, in run_checks  
    new_errors = check(app_configs=app_configs, databases=databases)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver  
    return check_method()
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\urls\resolvers.py", line 416, in check
    for pattern in self.url_patterns:
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\urls\resolvers.py", line 602, in url_patterns     
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\urls\resolvers.py", line 595, in urlconf_module   
    return import_module(self.urlconf_name)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "D:\projects\EmNoSy\venv\emnosys_wqrfl\emnosys_wqrfl\urls.py", line 6, in <module>
    path('', include('emnosys.urls')),
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\urls\conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "D:\projects\EmNoSy\venv\emnosys_wqrfl\emnosys\urls.py", line 2, in <module>
    from . import views
  File "D:\projects\EmNoSy\venv\emnosys_wqrfl\emnosys\views.py", line 19, in <module>
    from .utils import SendEmail
  File "D:\projects\EmNoSy\venv\emnosys_wqrfl\emnosys\utils.py", line 14, in <module>
    send_mass_mail(message_tuple, fail_silently=False)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\mail\__init__.py", line 87, in send_mass_mail
    return connection.send_messages(messages)
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\mail\backends\smtp.py", line 102, in send_mes
sages
    new_conn_created = self.open()
  File "D:\projects\EmNoSy\venv\lib\site-packages\django\core\mail\backends\smtp.py", line 69, in open     
    self.connection.login(self.username, self.password)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
smtplib.py", line 730, in login
    raise last_exception
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
smtplib.py", line 721, in login
    initial_response_ok=initial_response_ok)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.7_3.7.2544.0_x64__qbz5n2kfra8p0\lib\
smtplib.py", line 642, in auth
    raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  ht
tps://support.google.com/mail/?p=BadCredentials g11-20020a2eb5cb000000b002c9ffbedc24sm91425ljn.122 - gsmtp'
)



我检查了电子邮件和密码,确实正确,但我不知道该怎么办

django smtp gmail
1个回答
0
投票

密码错误,我尝试使用电子邮件密码,但它需要来自 gmail 的应用程序密码!

© www.soinside.com 2019 - 2024. All rights reserved.