django - SMTPSenderRefused at /password-reset/
问题描述
我遇到了这个错误,我在这里使用的是 Ubuntu Linux 操作系统,我在名为“.bash_profile”的主页部分创建了 env 变量,我在其中保存了我的 Gmail 并通过了。现在的问题是,当我在 settings.py 文件中调用它们时,它们不起作用,但是如果我尝试将电子邮件放入并传递到那里,则它可以正常工作,并且我收到了重置电子邮件。我已经尝试过的事情是-
- 项目清单
- env 变量和 settings.py 中的两个变量的名称相同
- 我没有使用 2FA,所以我允许使用不太安全的应用程序。
- 尝试使用 2FA 并遵循不同的过程。
- Django 用户中的邮件 id 和这个用户是相同的。
- 已经在堆栈溢出和其他站点上寻找不同的答案。
代码如下
设置.py
"""
Django settings for blog_page project.
Generated by 'django-admin startproject' using Django 2.2.6.
For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '3*v_t0-f_+g1un_7k-mpt7q2=*3q+#&6!c5b1+b#$#buxwa_4e'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'blog',
'users',
'crispy_forms',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
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 = 'blog_page.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 = 'blog_page.wsgi.application'
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Password validation
# https://docs.djangoproject.com/en/2.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/2.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/2.2/howto/static-files/
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
CRISPY_TEMPLATE_PACK = 'bootstrap4'
LOGIN_REDIRECT_URL = 'blog-home'
LOGIN_URL = 'login'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
EMAIL_HOST_USER = os.environ.get('DB_USER')
EMAIL_HOST_PASSWORD = os.environ.get('DB_PASS')
DEFAULT_FROM_EMAIL = 'lkbhitesh07@gmail.com'
项目的 urls.py
from django.contrib import admin
from django.urls import path, include
from users import views as user_view
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_view
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
path('register/', user_view.register, name='register'),
path('login/', auth_view.LoginView.as_view(template_name='users/login.html'), name='login'),
path('logout/', auth_view.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
path('profile/', user_view.profile, name='profile'),
path('password-reset/', auth_view.PasswordResetView.as_view(template_name='users/password_reset.html'), name='password_reset'),
path('password-reset/done/', auth_view.PasswordResetDoneView.as_view(template_name='users/password_reset_done.html'), name='password_reset_done'),
path('password-reset-confirm/<uidb64>/<token>/', auth_view.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'), name='password_reset_confirm'),
path('password-reset-complete/', auth_view.PasswordResetCompleteView.as_view(template_name='users/password_reset_complete.html'), name='password_reset_complete'),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
错误显示在终端
atching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
May 07, 2020 - 10:16:44
Django version 2.2.6, using settings 'blog_page.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[07/May/2020 10:16:49] "GET /password-reset/ HTTP/1.1" 200 4013
[07/May/2020 10:16:51] "GET /password-reset/ HTTP/1.1" 200 4013
[07/May/2020 10:16:51] "GET /static/blog/main.css HTTP/1.1" 304 0
[07/May/2020 10:16:52] "GET /password-reset/ HTTP/1.1" 200 4013
[07/May/2020 10:16:52] "GET /static/blog/main.css HTTP/1.1" 304 0
Internal Server Error: /password-reset/
Traceback (most recent call last):
File "/home/hitesh/.local/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/utils/decorators.py", line 45, in _wrapper
return bound_method(*args, **kwargs)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/utils/decorators.py", line 142, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/contrib/auth/views.py", line 220, in dispatch
return super().dispatch(*args, **kwargs)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/views/generic/edit.py", line 142, in post
return self.form_valid(form)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/contrib/auth/views.py", line 233, in form_valid
form.save(**opts)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/contrib/auth/forms.py", line 295, in save
email, html_email_template_name=html_email_template_name,
File "/home/hitesh/.local/lib/python3.6/site-packages/django/contrib/auth/forms.py", line 250, in send_mail
email_message.send()
File "/home/hitesh/.local/lib/python3.6/site-packages/django/core/mail/message.py", line 291, in send
return self.get_connection(fail_silently).send_messages([self])
File "/home/hitesh/.local/lib/python3.6/site-packages/django/core/mail/backends/smtp.py", line 110, in send_messages
sent = self._send(message)
File "/home/hitesh/.local/lib/python3.6/site-packages/django/core/mail/backends/smtp.py", line 126, in _send
self.connection.sendmail(from_email, recipients, message.as_bytes(linesep='\r\n'))
File "/usr/lib/python3.6/smtplib.py", line 867, in sendmail
raise SMTPSenderRefused(code, resp, from_addr)
smtplib.SMTPSenderRefused: (530, b'5.7.0 Authentication Required. Learn more at\n5.7.0 https://support.google.com/mail/?p=WantAuthError t21sm3542961pgu.39 - gsmtp', 'lkbhitesh07@gmail.com')
[07/May/2020 10:17:02] "POST /password-reset/ HTTP/1.1" 500 132443
如果我必须显示任何其他代码,请告诉我。
解决方案
经过这一切,我得到了解决方案。您需要做的就是将您的密钥或密码放入您的虚拟环境中。
sudo nano virtual_env/bin/activate
尝试此命令并确保重新启动您的环境,然后您就可以开始了。我知道这不是一个完美的解决方案,但对我有用。我在这里拿的参考资料。
如果有人有建议,请告诉我这会增加我的知识。
推荐阅读
- python - Python:根据另一列值从 DataFrame 中删除重复项
- android - 使用post表单数据上传axios图片总是返回网络错误
- python - 使用 SFTP 将文件从 AWS S3 传输到 Unix 服务器
- vue.js - 如何在鼠标悬停在使用 Vuetify 数据表的表格时显示按钮
- gnome - 如何将 Dconf 包添加到 buildroot
- kotlin - 如果 List 包含重复项,则对值应用更改 Kotlin
- gradle - com.sun:tools:jar 的“dependencies.dependency.systemPath”必须指定一个绝对值
- angular - 离子事件替换为 Angular Observables
- amazon-web-services - AWS 可用区标签是否跨时间/用户相同?
- c# - Microsoft.Azure.StorageException:指定的资源名称包含无效字符