前言

​ 关于 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="width: 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="width: 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="width: 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

Python-发送邮件验证码的更多相关文章

  1. node.js 模拟自动发送邮件验证码

    node.js 模拟自动发送邮件验证码 引言 正文 1. QQ邮箱设置 2. 安装nodemailer 3.配置信息 4.综合 5.讲解 结束语 引言 先点赞,再看博客,顺手可以点个关注. 微信公众号 ...

  2. python发送邮件

    python发送邮件(无附件) ======================================================= #!/usr/bin/env python#coding ...

  3. python发送邮件及附件

    今天给大伙说说python发送邮件,官方的多余的话自己去百度好了,还有一大堆文档说实话不到万不得已的时候一般人都不会去看,回归主题: 本人是mac如果没有按照依赖模块的请按照下面的截图安装 导入模块如 ...

  4. python 发送邮件实例

    留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例

  5. 解读Python发送邮件

    解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Pyt ...

  6. python 发送邮件例子

    想到用python发送邮件 主要是服务器 有时候会产生coredump文件  ,然后因为脚本重启原因,服务器coredump产生后会重启 但是没有主动通知开发人员 想了下可以写个脚本一旦产生cored ...

  7. 利用python发送邮件

    找了很多使用python发送邮件的文章, 发现写的并不是太全, 导致坑特别多, 刚把这个坑跨过去, 在此记录下来 本代码使用163作为发送客户端, 接收邮箱随意 首先登录163邮箱, 开启POP3/S ...

  8. 用Python发送邮件

    文件:send.py # -*- coding:utf-8 -*- # ## 任兴测试用Python发送邮件 import os import sys import getopt import tim ...

  9. python识别验证码——PIL,pytesser,pytesseract的安装

    1.使用Python识别验证码需要安装Python的图像处理模块(PIL.pytesser.pytesseract) (安装过程需要pip,在我的Python中已经安装pip了,pip的安装就不在赘述 ...

  10. ETL过程跑完后,使用python发送邮件

    目标库中,如果有行数为0的表,使用python发送邮件 # -*- coding:utf-8 -*- # Author: zjc # Description:send monitor info to ...

随机推荐

  1. SQLServer2019安装教程

    可以去官网下载,我百度网盘也有都一样 https://pan.baidu.com/s/1i3umqHXSUMbxJ9rRi6mU4A 提取码:5g9q 打开应用程序 点击安装,点第一个全新得SQL s ...

  2. Java实现 LeetCode 29 两数相除

    29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商 ...

  3. Java实现LeetCode_0001_Two Sum

    import java.util.Arrays; import java.util.Scanner; public class TwoSum_1 { public static void main(S ...

  4. Java实现第八届蓝桥杯购物单

    购物单 题目描述 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打 ...

  5. 三分钟搭建websocket实时在线聊天,项目经理也不敢这么写

    我们先看一下下面这张图: 可以看到这是一个简易的聊天室,两个窗口的消息是实时发送与接收的,这个主要就是用我们今天要讲的websocket实现的. websocket是什么? websocket是一种网 ...

  6. Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架

    根据最新的统计显示,仅在过去的两年中,当今世界上90%的数据都是在新产生的,每天创建2.5万亿字节的数据,并且随着新设备,传感器和技术的出现,数据增长速度可能会进一步加快. 从技术上讲,这意味着我们的 ...

  7. How to Use tomcat on Linux

    看是否有tomcat在运行 ps -ef |grep tomcat eg: -bash-4.1# ps -ef |grep tomcat root 1 0 0 14:26 ? 00:00:00 /bi ...

  8. Asp.Net Core入门之自定义服务注册

    谈到服务注册,首先我们先了解一下服务注册时使用的三种方式,也代表了不同的服务生命周期: AddTransient AddScoped AddSingleton AddSingleton生命周期最长,其 ...

  9. IE6、IE7兼容querySelectorAll和querySelector方法

    querySelector 和 querySelectorAll 方法是 W3C Selectors API 规范中定义的.他们的作用是根据 CSS 选择器规范,便捷定位文档中指定元素. 目前几乎主流 ...

  10. python数据预处理

    缺失值处理 import pandas as pda import numpy as npy import matplotlib.pylab as pyl # data=pda.read_excel( ...