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)
    ]

运行结果

Django Web系列三 发送邮件,邮件验证