Python-发送邮件验证码
前言
关于 Python 这个栏目,咕了几个月了,今天讲讲如何发送验证码并验证。
因为部分原因,写这篇文章的时候心情是不太好的,播放首歌吧。
代码
导入
- 导入
yagmail
,random
和time
库
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>{},您好! </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>您的 JunJun.Tec 验证码/临时登录密码 为 </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>如非您本人操作无需理会。 </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>{},您好! </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>您的 JunJun.Tec 验证码/临时登录密码 为 </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>如非您本人操作无需理会。 </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>{},您好! </font></div>
<div style="text-align: center;"><font><br>
</font>
</div>
<div style="text-align: center;"><font>您的 JunJun.Tec 验证码/临时登录密码 为 </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>如非您本人操作无需理会。 </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-发送邮件验证码的更多相关文章
- node.js 模拟自动发送邮件验证码
node.js 模拟自动发送邮件验证码 引言 正文 1. QQ邮箱设置 2. 安装nodemailer 3.配置信息 4.综合 5.讲解 结束语 引言 先点赞,再看博客,顺手可以点个关注. 微信公众号 ...
- python发送邮件
python发送邮件(无附件) ======================================================= #!/usr/bin/env python#coding ...
- python发送邮件及附件
今天给大伙说说python发送邮件,官方的多余的话自己去百度好了,还有一大堆文档说实话不到万不得已的时候一般人都不会去看,回归主题: 本人是mac如果没有按照依赖模块的请按照下面的截图安装 导入模块如 ...
- python 发送邮件实例
留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例
- 解读Python发送邮件
解读Python发送邮件 Python发送邮件需要smtplib和email两个模块.也正是由于我们在实际工作中可以导入这些模块,才使得处理工作中的任务变得更加的简单.今天,就来好好学习一下使用Pyt ...
- python 发送邮件例子
想到用python发送邮件 主要是服务器 有时候会产生coredump文件 ,然后因为脚本重启原因,服务器coredump产生后会重启 但是没有主动通知开发人员 想了下可以写个脚本一旦产生cored ...
- 利用python发送邮件
找了很多使用python发送邮件的文章, 发现写的并不是太全, 导致坑特别多, 刚把这个坑跨过去, 在此记录下来 本代码使用163作为发送客户端, 接收邮箱随意 首先登录163邮箱, 开启POP3/S ...
- 用Python发送邮件
文件:send.py # -*- coding:utf-8 -*- # ## 任兴测试用Python发送邮件 import os import sys import getopt import tim ...
- python识别验证码——PIL,pytesser,pytesseract的安装
1.使用Python识别验证码需要安装Python的图像处理模块(PIL.pytesser.pytesseract) (安装过程需要pip,在我的Python中已经安装pip了,pip的安装就不在赘述 ...
- ETL过程跑完后,使用python发送邮件
目标库中,如果有行数为0的表,使用python发送邮件 # -*- coding:utf-8 -*- # Author: zjc # Description:send monitor info to ...
随机推荐
- Java实现 蓝桥杯VIP 算法训练 统计字符次数
算法训练 统计字符次数 时间限制:1.0s 内存限制:512.0MB 输入一个字符串(长度在100以内),统计其中数字字符出现的次数. 样例输入 Ab100cd200 样例输出 6 import ja ...
- Java实现完美洗牌算法
1 问题描述 有一个长度为2n的数组{a1,a2,a3,-,an,b1,b2,b3,-,bn},希望排序后变成{a1,b1,a2,b2,a3,b3,-,an,bn},请考虑有没有时间复杂度为O(n)而 ...
- java实现第五届蓝桥杯供水设施
供水设施 X星球的居民点很多.Pear决定修建一个浩大的水利工程,以解决他管辖的N个居民点的供水问题.现在一共有N个水塔,同时也有N个居民点,居民点在北侧从1号到N号自西向东排成一排:水塔在南侧也从1 ...
- Windows10开启Ubuntu子系统并搭建Docker环境
前言 很早就听说微软有个基于Ubuntu的子系统,一直也没机会尝试一下,之前也只是用VMware安装,但是还要单独安装软件,安装镜像,一点都不fit,所以就瞎折腾下(也是因为最近有空). 搭建Ubun ...
- sort运用
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; struc ...
- Android 图片裁剪踩坑
今天做图库图片的裁剪遇到了不少坑,今天记录一下,以下坑位供各位看官参考: 如果有不对之处,欢迎各位看官留言评论! 图片裁剪踩坑锦囊: 问题一:相册裁剪权限问题 解:这个简单,对于Android6. ...
- 一张图搞懂Ubuntu安装时姓名、计算机名、用户名
安装Ubuntu时会要求填写如下图的信息: 感谢:苏守坤 注意:上面的博客讲述了各自的具体含义,本篇博客只是说明这些名称在系统安装后会出现的位置.
- Mac搭建Fluter应用环境
1.创建一个路径.例如我创建是: /Users/chenghui/ 然后创建一个文件夹: development 把下载好的Fluter 解压到当前目录下: development /Users/ch ...
- 油猴脚本 之 网教通直播评论记录抓取 v2.0
先放一个 <油猴脚本 之 网教通直播评论记录抓取>那篇文章的传送门 . 修复内容 将所有表情转为 [符号表情] 字样,而非删除: 修复被禁言用户读取异常,现在被禁言用户表示为 张三 [已禁 ...
- (四)Maven项目工程目录约定
使用maven创建的工程我们称它为maven工程,maven工程具有一定的目录规范,如下: src/main/java 存放项目的.java文件 src/main/resources 存放项目资源文件 ...