• Python-发送邮件验证码


    前言

    ​ 未经授权,禁止转载。转载联系邮箱i@r3r.top

    ​ 关于 Python 这个栏目,咕了几个月了,今天讲讲如何发送验证码并验证。

    ​ 因为部分原因,写这篇文章的时候心情是不太好的,播放首歌吧。


    代码

    导入

    • 导入yagmail,randomtime
    import yagmail,random,time #导入 yagmail , random 和 time 库
    

    询问用户信息

    • 询问用户昵称邮箱 , 并设置验证码
    ss = input("您的昵称:")#询问用户昵称
    yonghu = input("您的邮箱:")#询问用户邮箱
    key = random.randint(0,999999)#设置验证码
    

    链接邮箱服务器

    • 链接邮箱SMTP服务器发信
    yag = yagmail.SMTP( user="**邮箱账号**", password="**邮箱密码或授权码**", host='**邮箱SMTP服务器**')#链接邮箱服务器发信
    
    • 后续可能会出教程获取授权码,QQ邮箱的服务器是:smtp.qq.com;腾讯企业邮箱的服务器是:smtp.exmail.qq.com;

    设置邮件主题

    • 设置邮件发送时的主题
    subject = [" JunJun.Tec 验证码"]
    

    设置邮件内容

    • 设置邮件发送时的内容
    • 以下提供邮件HTML代码参考 ,也可不带格式。
    <table style=" 99.8%; height: 95%;">
        <tbody>
            <tr>
                <td id="QQMAILSTATIONERY" style="background:url(https://rescdn.qqmail.com/bizmail/zh_CN/htmledition/images/xinzhi/bg/a_02.jpg) no-repeat #fffaf6; min-height:550px; padding:100px 55px 200px 100px; ">
                <div style="text-align: center;"><font>{},您好!&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>您的 JunJun.Tec 验证码/临时登录密码 为&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font color="#ff0000"><b><u>{}</u></b></font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>如非您本人操作无需理会。&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>感谢支持。</font></div>
                </td>
            </tr>
        </tbody>
    </table>
    <div><includetail><!--<![endif]--></includetail></div>
    
    • 注明,代码内的 {} 无需修改,稍后需要嵌入验证码。如果自行编写,需要 {} 从而加入验证码。

    以下提供Python代码

    contents = ['''
    <table style=" 99.8%; height: 95%;">
        <tbody>
            <tr>
                <td id="QQMAILSTATIONERY" style="background:url(https://rescdn.qqmail.com/bizmail/zh_CN/htmledition/images/xinzhi/bg/a_02.jpg) no-repeat #fffaf6; min-height:550px; padding:100px 55px 200px 100px; ">
                <div style="text-align: center;"><font>{},您好!&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>您的 JunJun.Tec 验证码/临时登录密码 为&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font color="#ff0000"><b><u>{}</u></b></font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>如非您本人操作无需理会。&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>感谢支持。</font></div>
                </td>
            </tr>
        </tbody>
    </table>
    <div><includetail><!--<![endif]--></includetail></div>
    '''.format(ss,key)]#使用 ''' 嵌入HTML代码,使用 format 嵌入称呼(ss)与验证码(key)
    

    使用 ''' 嵌入HTML代码,使用 format 嵌入称呼(ss)验证码(key)

    发送邮件

    • 使用Yagmail向用户发信
    yag.send(yonghu,subject, contents)#发送邮件
    print("验证码邮件发送成功")
    

    询问用户验证码

    • 使用input向用户询问验证码
    keypass2 = input("输入您的验证码:")#询问用户验证码
    
    • 如果你直接拿用户提交的变量(keypass2)验证码变量(key)进行比较,你就会发现bug,原因是两者格式不同,所以我们要对用户提交的变量(keypass2)进行处理

    处理用户的验证码

    • 对验证码进行处理
    keypass = int(keypass2)#对 keypass2 进行 int 处理
    
    • 比对验证码
    if keypass == key:
        print('correct!')# 正确
    else:
        print("Error!")# 错误
    

    仍需改进的地方

    • 还有许多内容没做,其中包括输入错误验证码后等待再发送防止多次请求等等。

    完整代码

    import yagmail,random,time #导入 yagmail , random 和 time 库
    ss = input("您的昵称:")#询问用户昵称
    yonghu = input("您的邮箱:")#询问用户邮箱
    key = random.randint(0,999999)#设置验证码
    yag = yagmail.SMTP( user="**邮箱账号**", password="**邮箱密码或授权码**", host='**邮箱SMTP服务器**')#链接邮箱服务器发信
    subject = [" JunJun.Tec 验证码"]
    contents = ['''
    <table style=" 99.8%; height: 95%;">
        <tbody>
            <tr>
                <td id="QQMAILSTATIONERY" style="background:url(https://rescdn.qqmail.com/bizmail/zh_CN/htmledition/images/xinzhi/bg/a_02.jpg) no-repeat #fffaf6; min-height:550px; padding:100px 55px 200px 100px; ">
                <div style="text-align: center;"><font>{},您好!&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>您的 JunJun.Tec 验证码/临时登录密码 为&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font color="#ff0000"><b><u>{}</u></b></font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>如非您本人操作无需理会。&nbsp;</font></div>
                <div style="text-align: center;"><font><br>
                    </font>
                </div>
                <div style="text-align: center;"><font>感谢支持。</font></div>
                </td>
            </tr>
        </tbody>
    </table>
    <div><includetail><!--<![endif]--></includetail></div>
    '''.format(ss,key)]#使用 ''' 嵌入HTML代码,使用 format 嵌入称呼(ss)与验证码(key)
    yag.send(yonghu,subject, contents)#发送邮件
    print("验证码邮件发送成功")
    keypass2 = input("输入您的验证码:")#询问用户验证码
    keypass = int(keypass2)#对 keypass2 进行 int 处理
    if keypass == key:
        print('correct!')# 正确
    else:
        print("Error!")# 错误
    

    演示

    邮件

    演示效果


    写在最后

    Python还是挺有意思的,但是想让本Python代码打包为小白操作的软件,还需要进行优化,编写GUI,那我们下期再见!


    本文发布在博客园,链接:https://www.cnblogs.com/jonyam/p/python-sand-email.html

    本文发布在JunJun's Blog,链接:http://blog.itscn.top/index.php/2020/07/13

  • 相关阅读:
    运动习惯
    无伤跑法
    libopencv_videoio.so, need by /lib/libopencv_highgui.so, not found (try using -rpath or -rpath-link)
    HI3536安装交叉编译工具链
    ubuntu源码安装cmake
    error: ‘CV_BGR2GRAY’ was not declared in this scope
    U8 EAI实现XML的生成
    一个关于车牌识别的文章,感谢作者的分享
    常用的PHP框架
    10款免费而优秀的图表JS插件
  • 原文地址:https://www.cnblogs.com/jonyam/p/python-sand-email.html
Copyright © 2020-2023  润新知