Django无法使用smtp方式发送qq邮件

Django邮件发送问题:从TLS配置到校园网解决方案
文章讲述了作者在使用Django开发过程中遇到的邮件发送超时问题,通过调整TLS设置、尝试不同端口,使用telnet检测网络连接,最终发现是校园网限制导致的。解决办法是切换到个人网络,确保邮件服务器连接畅通。

Django所需代码

settings.py

views.py

from django.core import mail
def send_code(request):
    # 用于创建验证码对象
    email = request.GET['email']
    code = ''
    for i in range(6):
        n = random.randint(0, 9)
        b = chr(random.randint(65, 90))
        s = chr(random.randint(97, 122))
        code += str(random.choice([n, b, s]))

    mail.send_mail("验证码", code, sender, recipient_list=[email])
    # 第一个参数为邮件标题
    # 第二个参数为邮件内容
    # 第三个参数为发送者
    # 第四个参数为接受者列表
    checkcode.objects.create(email=email, code=code)
    return HttpResponse("ok")

错误信息

使用ajax方法发送GET请求超时

在我的views.py中创建了如上的视图,并用ajax方法进行发送请求,在对网络请求的抓包以及控制台错误信息的打印,得知是与邮件发送的服务器连接错误

尝试更改tls与port

我将settings.py中如下配置组合一一尝试

EMAIL_USE_TLS = True
EMAIL_PORT = 25 / 465 / 587

然后根据查阅相关资料,免费的qq邮箱发送服务器,根据官方给出的是不支持tls的,并且端口就应该为25,然后我就觉得不是项目代码的问题,开始尝试其他方法检查与qq邮箱的连接问题

其实事实证明一般来说官方给出的端口必有能用的,只要在邮箱里开通了对应的服务,并且正确获取了邮箱的授权码

尝试使用telnet

准备工作

用这个方法检查网络连接问题,首先电脑上得打开telnet服务

在电脑上打开控制面板——程序——启用或关闭Windows功能

勾选即可,无需重启电脑

打开cmd,输入telnet不报错

——如果报错则说明电脑上没有该文件,需要下载

然后输入quit或重启cmd,返回正常操作框

输入下图连接指令

发现报错

错误原因

最后通过寻求其他人的连接状况,发现校外的都可以连上,这时候学长告诉我可能是校园网的原因

于是打开手机热点,连上个人网络后,测试连接,成功

修改网络之后,能够通过django的接口顺利发送出验证码邮件

这个问题也就解决了,以后出现网络问题一定要排查校园网以及vpn等可能出错的点

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值