1、邮箱验证
邮箱验证:主要用在web领域,当用户注册的时候,当注册成功的时候,就给用户发送一个邮件,邮件内容一般都是激活连接
注册成功==》执行Python代码==》邮件发送成功
smtp: 邮件发送协议
pop3: 邮件接受协议
imap: 邮件接收协议
python发送邮件使用的库是smtplib
发送方(我的163邮箱)、接收方
1、首先进去163邮箱进行配置,就是打开权限
打开pop3/smtp服务
smtp.163.com
2、客户端授权码,配置一个密码
记住这个密码,用来登录smtp.163.com
3、编写代码,发送邮件
import smtplib
from email.mime.text import MIMEText
mail_server = smtplib.SMTP(smtp_server, 25)
mail_server.login(sender, password)
mail_server.sendmail(sender, to, message.as_string())
mail_server.quit()
#邮件案例演示
import smtplib
# 将你要发送的内容,转化为邮件的文本格式
from email.mime.text import MIMEText
# 要登录的smtp服务器
smtp_server = 'smtp.163.com'
# 定义发送方
sender = '[email protected]'
# 客户端授权码,不是163邮箱的密码
password = '123456aa'
# 接收方是谁,可以是多个,中间以逗号隔开
to = '[email protected],[email protected],[email protected]'
# 要发送的内容是啥,
message = '今晚一块看电影'
# 通过MIMEText将内容转化为邮件文本格式
message = MIMEText(message)
# 定制邮件标题
message['Subject'] = '邀请函'
# 定制邮件来源
message['From'] = sender
# 通过stmp服务的地址和端口号创建一个对象
mail_server = smtplib.SMTP(smtp_server, 25)
# 登录这个服务器
mail_server.login(sender, password)
# 发送邮件
mail_server.sendmail(sender, to, message.as_string())
# 发送完毕之后,退出即可
mail_server.quit()
2、短信验证
点击发送验证码===》执行程序===》发送短信验证码
有专业的短信发送平台,我们的代码就操作短信平台的
其实并不是你操作短信平台,而是短信平台为了你留出来接口,供你使用
秒嘀、云之讯
指定模板单发地址:https://open.ucpaas.com/ol/sms/sendsms
常用的身份认证参数:
appid:355a844814b74f96a2bea3bb6d6dc58c
asid:8fcfcbc013d0462f2874354de4bc1164
token:96c5de2765dffbef410c46ea3bbe023c
模板id:282536
#短信案例演示
import random
# 通过这个库向接口发送post请求
import requests
# import urllib.parse
# 应用id
headers = {
'Content-type': 'application/x-www-form-urlencoded'
}
appid = 'bc286b14263b4d79a5560500298f17cb'
# 账户id
accountsid = '8fcfcbc013d0462f2874354de4bc1164'
# token
token = '96c5de2765dffbef410c46ea3bbe023c'
# 模板id
tmpid = '101886'
# 接口地址
post_url = 'https://open.ucpaas.com/ol/sms/sendsms'
# 生成一个随机验证码
code = random.randint(1000, 9999)
print(code)
# string =
# 定义请求时的参数
params = {
"sid": accountsid,
"token": token,
"appid": appid,
"templateid": tmpid,
"param": "1234,5",
"mobile": "17701256561"
}
# 将post参数进行编码,然后在发送
# params = urllib.parse.urlencode(params)
# 创建一个模拟浏览器对象 根据主机号生成一个对象
# conn = http.client.HTTPConnection('ucpaas.com', port=80)
r = requests.post(url=post_url, data=params, headers=headers)
# 发送请求
# conn.request(method='GET', url='https://www.baidu.com/')
# 得到相应
# response = conn.getresponse()
print(r.text)
# 关闭连接
# conn.close()
#miaodi短信案例演示
import time
import hashlib
import urllib.parse
import http.client
# 请求的url
url = 'https://api.miaodiyun.com/20150822/industrySMS/sendSMS'
# 请求的http包头
headers = {
'Content-type': 'application/x-www-form-urlencoded'
}
# 注册时候给你的账户id和token玩意
accountSid = '5d256d3c0a96410fb486866f53df9c62'
token = '0c05daf9cccd441ba418b98d264ec681'
# 发送给谁
to = '17701256561'
# 获取指定个是的时间戳
timestamp = time.strftime('%Y%m%d%H%M%S')
# print(timestamp)
# 获取指定的md5码
sig = accountSid + token + timestamp
hash = hashlib.md5()
hash.update(sig.encode('utf-8'))
sig = hash.hexdigest()
# 指定发送短信模板
templateid = '96466943'
code = '987123'
fenzhong = 5
param = code + ',' + str(fenzhong)
# 处理post请求时发送的数据
formdata = {
'accountSid': accountSid,
'templateid': templateid,
'param': param,
'to': to,
'timestamp': timestamp,
'sig': sig
}
# 将formdata进行编码
formdata = urllib.parse.urlencode(formdata)
# 创建模拟浏览器对象
conn = http.client.HTTPConnection('api.miaodiyun.com', port=80)
# 通过模拟浏览器发送请求
conn.request(method='POST', url=url, headers=headers, body=formdata)
# 获取该请求响应
response = conn.getresponse()
print(response.read().decode('utf-8'))
# 将链接关闭
conn.close()
3、turtle(海龟制图)
import turtle
screensize()
hideturtle() 隐藏画笔
showturtle() 显示画笔
done()
pensize(width) 画笔的粗细
speed() 画笔速度
penup() 抬起画笔
pendwon() 放下画笔
color() 画笔的颜色
fillcolor() 设置填充颜色
begin_fill() 开始填充
end_fill() 结束填充
forward() 往前走多少距离
backward() 往后走多少距离
right(angle) 向右打方向盘
left(angle) 向左打方向盘
goto(x, y) 走到指定的坐标点
home() 回到原点
circle(step) 画一个圆,半径是step
dot(d, color) 画一个点,d是直径,color是颜色
undo() 撤销上一次操作
clear() 清屏 颜色不变,画笔位置不变
reset() 重置 初始化
#海龟制图演示
import turtle
turtle.screensize(1000, 1000)
# turtle.hideturtle()
turtle.showturtle()
turtle.pensize(1)
turtle.speed(1)
# 颜色是有红绿蓝三种颜色组成
# 范围是0-1 100表示红 010表示绿色
# turtle.color((0.5, 0.1, 0.3))
turtle.color('blue')
turtle.penup()
turtle.forward(200)
turtle.fillcolor('pink')
turtle.begin_fill()
turtle.pendown()
turtle.backward(100)
turtle.right(90)
turtle.forward(100)
turtle.left(135)
turtle.forward(141)
turtle.end_fill()
turtle.done()
#海龟制图案例演示二
import turtle
turtle.screensize()
turtle.color('red')
turtle.pensize(5)
turtle.speed(1)
turtle.circle(100)
# turtle.dot(100, 'blue')
turtle.color('blue')
turtle.forward(100)
# turtle.undo()
turtle.reset()
# turtle.goto(200, 0)
# turtle.home()
# turtle.goto(200, 200)
# turtle.goto(0, 0)
turtle.done()
#海龟制图案例演示三 画树叶
from numpy import *
from random import random
import turtle
turtle.reset()
# 画树叶
x = array([[.5],[.5]])
p = [0.85,0.92,0.99,1.00]
A1 = array([[.85, 0.04],
[-0.04,.85]])
b1 = array([[0],[1.6]])
A2 = array([[0.20,-0.26],
[0.23,0.22]])
b2 = array([[0],[1.6]])
A3 = array([[-0.15,0.28],
[0.26,0.24]])
b3 = array([[0],[0.44]])
A4 = array([[0,0],
[0,0.16]])
turtle.color("blue")
cnt = 1
while True:
cnt += 1
if cnt == 2000:
break
r = random()
if r < p[0]:
x = dot(A1 , x) + b1
elif r < p[1]:
x = dot(A2 , x) + b2
elif r < p[2]:
x = dot(A3 , x) + b3
else:
x = dot(A4 , x)
#print x[1]
turtle.up()
turtle.goto(x[0][0] * 50,x[1][0] * 40 - 240)
turtle.down()
turtle.dot()
turtle.done()