Django Web系列三 发送邮件,邮件验证
配置参考:https://code.ziqiangxuetang.com/django/django-send-email.html
settings 配置:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' #用于发送电子邮件的后端。
EMAIL_USE_TLS = True #与SMTP服务器通信时是否使用TLS(安全)连接。这用于显式TLS连接,通常在端口587上。
EMAIL_HOST = 'smtp.qq.com' #使用QQ邮箱,这样配置(不用更改),这里是默认SMTP主机,用于发送电子邮件的主机。
EMAIL_PORT = 25 #用于定义的SMTP服务器的端口
EMAIL_HOST_USER = '[email protected]' #你的邮箱地址
EMAIL_HOST_PASSWORD = 'xxxx' #这个是SMTP授权码,不是你的登录密码
DEFAULT_FROM_EMAIL = '[email protected]' #默认邮箱
QQ邮箱授权码怎么获得,点我
或者
EMAIL_USE_SSL = True #注意:EMAIL_USE_SSL 和 EMAIL_USE_TLS 是互斥的,即只能有一个为 True。
EMAIL_HOST = 'smtp.163.com' # 如果是 163 ,这样配置(不用更改)
EMAIL_PORT = 465
EMAIL_HOST_USER = '[email protected]' # 你的邮箱地址
EMAIL_HOST_PASSWORD = '[email protected]' # 授权码
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL 还可以写成这样:
DEFAULT_FROM_EMAIL = 'tuweizhong <[email protected]>'
看具体项目(核心代码):Django+ajax
<h1>注册</h1>
<div style="position: relative;width: 305px;margin: 15px auto 0 auto;text-align: center;">
{% csrf_token %}
<input type="text" name="to_email" class="username" placeholder="使用邮箱注册">
<input id='submit' class="username" type="submit" value="获取验证码" style="background: #ef4300;width: 300px;border: 1px solid #ff730e">
<input type="text" name="password" class="password" placeholder="输入验证码">
<button id="submit2" type="submit">确定</button>
<input type="text" name="result" class="result">
</div>
ajax
<script>
$('#submit').click(function () {
$.ajax({
url: 'http://127.0.0.1:8000/login/register/emaill/security_email/',
type: 'GET',
data: {
'to_email': $('.username').val(),
},
success: function (context) {
$('#submit').val('获取成功')
}
})
});
$('#submit2').click(function () {
$.ajax({
url: 'http://127.0.0.1:8000/login/register/emaill/verify',
type: 'GET',
data: {
'security_code': $('.password').val(),
},
success: function (context) {
$('.result').val(context)
}
})
})
</script>
views
def security_email(request):
'''发送邮件验证码'''
to_email = request.GET['to_email']
import random
security_code = ''.join(random.sample(list('1234567890'), 5))
request.session['security_code'] = security_code
try:
send_mail('验证码', 'Stic入会验证码为:%s' % (security_code),'[email protected]',
[to_email],fail_silently=False)
print(security_code)
return HttpResponse('ok')
except Exception as e:
'''错误处理部分'''
print('发送邮件错误:',e)
return HttpResponse('发生了未知错误,请检查网络是否连接!')
def verify(request):
security_code = request.GET['security_code']
if request.session['security_code'] == security_code:
return HttpResponse('ok')
else:
return HttpResponse('no')
url
urlpatterns = [
path('', views.loginview,name='index'),
path('loginview/',views.loginview,name='loginview'),
path('register/',views.registerview,name='register'),
path('register/emaill/security_email/',views.security_email),
path('register/emaill/verify/', views.verify)
]