• 150632

    文章

  • 1244

    评论

  • 13

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Localhost环境下使用Django send_mail发送邮件——以qq邮箱为例


目录

    • 安装django-allauth。
    • QQ邮箱获取授权码
    • 配置settings.py
    • 最后再将allauth加到项目的urls.py里去。
    • django-allauth常见设置选项
    • 运行结果

django-allauth是最受欢迎的管理用户登录与注册的第三方Django安装包。它非常强大,能实现以下核心功能。今天我么就来看看如何使用它,简化我们用户注册,登录及账户管理。

  • 用户注册

  • 用户登录

  • 退出登录

  • 第三方auth登录(微信,微博等)

  • 邮箱验证

  • 登录后密码重置

  • 忘记密码,邮箱发送密码重置链接

安装django-allauth。

使用pip安装

pip install django-allauth

QQ邮箱获取授权码

配置settings.py

安装好后设置myproject/settings.py,将allauth相关APP加入到INSTALLED_APP里去。对于第三方的providers,你希望用谁就把它加进去。值得注意的是allauth对于站点设置django.contrib.sites有依赖,你必需也把它加入进去,同时设置SITE_ID。(myproject是项目名称)


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.github',
]
    SITE_ID = 1

# 基本设定
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_EMAIL_REQUIRED = True
LOGIN_REDIRECT_URL = '/accounts/profile/'
 
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)
 
# 邮箱设定
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = 'xxxx3116@qq.com' # 你的 QQ 账号和授权码
EMAIL_HOST_PASSWORD = 'xxxx'
EMAIL_USE_TLS = True  # 这里必须是 True,否则发送不成功
EMAIL_FROM = 'xxxx3116@qq.com' # 你的 QQ 账号
DEFAULT_FROM_EMAIL = 'xxxx3116@qq.com

最后再将allauth加到项目的urls.py里去。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('allauth.urls')),
] 

django-allauth常见设置选项

你也可以添加其它设置选项来实现你所想要的功能, 比如设置邮件确认过期时间,限制用户使用错误密码登录的持续时间。

  • ACCOUNT_AUTHENTICATION_METHOD (=“username” | “email” | “username_email”):指定要使用的登录方法(用户名、电子邮件地址或两者之一)

  • ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS (=3):邮件确认邮件的截止日期(天数)

  • ACCOUNT_EMAIL_VERIFICATION (=“optional”):注册中邮件验证方法:“强制(mandatory)”,“可选(optional)”或“否(none)”之一

  • ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN (=180):邮件发送后的冷却时间(以秒为单位)

  • ACCOUNT_LOGIN_ATTEMPTS_LIMIT (=5):登录尝试失败的次数

  • ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT (=300):从上次失败的登录尝试,用户被禁止尝试登录的持续时间

  • ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION (=False):更改为True,用户一旦确认他们的电子邮件地址,就会自动登录

  • ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE (=False):更改或设置密码后是否自动退出

  • ACCOUNT_LOGIN_ON_PASSWORD_RESET (=False):更改为True,用户将在重置密码后自动登录

  • ACCOUNT_SESSION_REMEMBER (=None):控制会话的生命周期,可选项还有:False,True

  • ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE (=False):用户注册时是否需要输入邮箱两遍

  • ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE (=True): 用户注册时是否需要用户输入两遍密码

  • ACCOUNT_USERNAME_BLACKLIST (=[]):用户不能使用的用户名列表

  • ACCOUNT_UNIQUE_EMAIL (=True): 加强电子邮件地址的唯一性

  • ACCOUNT_USERNAME_MIN_LENGTH (=1):用户名允许的最小长度的整数

  • SOCIALACCOUNT_AUTO_SIGNUP (=True):使用从社会帐户提供者检索的字段(如用户名、邮件)来绕过注册表单

  • LOGIN_REDIRECT_URL (="/") 设置登录后跳转链接

  • ACCOUNT_LOGOUT_REDIRECT_URL (="/") 设置退出登录后跳转链接

运行结果

我们现在来看看能不能成功发送邮件。最快的是方式是在cmd terminal里输入python manage.py shell打开python shell,然后输入命令:

 from django.core.mail import send_mail
 send_mail('Test email', 'First Django email by QQ', 'xxx116@qq.com', ['xxxx116@qq.com'], fail_silently=False)

本文同步分享在 博客“Kinght_123”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤 主体内容背景
打开支付宝扫码付款购买视频教程
遇到问题联系客服QQ:419400980
注册梁钟霖个人博客