当我们在注册一个网页时,有的网页会让必须要短信验证、邮箱验证,才可以进行账号的注册。其实,我们在项目中会遇到很多问题,比如:当我们进行爬虫的时候,很容易由于网页的改版,造成我们事先写好的爬虫突然无效,此时就需要及时的通知到我们的后台管理人员,可以进行及时修改工作。所以使用短信或者邮件的发送是非常有必要的。

所以今天想来谈一下如何使用Python进行发送短信的操作。

短信验证

今天利用python第三方,发送短信验证码的代码,速实现一遍,短信立即收到,果断记录在案!

程序运行的环境是 windows10 + Python 3.6,由于第三方平台较多,我们今天使用榛子云短信平台,这个平台免费使用1条,充值10元,可以发送270条短信。

下载SDK

因为我们这次的环境是Python3,所以我们选择Python3,下载我们需要的其他文件,保存即可。

下载SDK文档

我们点击这个就会进入Python SDK 开发文档,内容如下:

1.安装

下载后的SDK只包含一个zhenzismsclient.py文件,直接导入到工程中即可使用。

以下是zhenzismsclient.py文件

# -*- coding: utf-8 -*-

# @Time : 2019/7/21 15:19

# @Author : hang1720

# @Site :

# @File : zhenzismsclient.py

# @Software: PyCharm

import urllib.request

import urllib.parse

class ZhenziSmsClient(object):

def __init__(self, apiUrl, appId, appSecret):

self.apiUrl = apiUrl

self.appId = appId

self.appSecret = appSecret

def send(self, number, message, messageId=''):

data = {

'appId': self.appId,

'appSecret': self.appSecret,

'message': message,

'number': number,

'messageId': messageId

}

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(self.apiUrl + '/sms/send.do', data=data)

res_data = urllib.request.urlopen(req)

res = res_data.read()

res = res.decode('utf-8')

return res

def balance(self):

data = {

'appId': self.appId,

'appSecret': self.appSecret

}

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(self.apiUrl + '/account/balance.do', data=data);

res_data = urllib.request.urlopen(req)

res = res_data.read()

return res

def findSmsByMessageId(self, messageId):

data = {

'appId': self.appId,

'appSecret': self.appSecret,

'messageId': messageId

}

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(self.apiUrl + '/smslog/findSmsByMessageId.do', data=data)

res_data = urllib.request.urlopen(req)

res = res_data.read()

return res

2.用法

引入模块

import zhenzismsclient as smsclient

使用事先申请的AppId、AppSecret初始化ZhenziSmsClient:

client = smsclient.ZhenziSmsClient(apiUrl, appId, appSecret);

apiUrl为请求地址,个人开发者使用https://sms_developer.zhenzikj.com,企业开发者使用https://sms.zhenzikj.com

下面是获取AppId、AppSecret的简单步骤:

1.首先,我们先登录。

zzy1.png

2.我们获取AppId、AppSecret

zzy2.jpg

温馨提示:

可以免费使用一条,后面就要自己购买了。

1)发送短信

result = client.send('15811111111', '您的验证码为2323');

send方法用于单条发送短信

参数1:接收者手机号码,参数2:短信内容

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

注: 测试发送短信内容不要使用"你好"或"12132"全数字形式,这种短信内容没有具体的意义,可能会被运营商屏蔽

{

"code":0,

"data":"发送成功"

}

2)发送短信(返回状态报告)

result = client.send('15811111111', '您的验证码为2323', 'dfee_dfdw_xdfd_dfdfd');

send方法用于单条发送短信,并且开发者可接受短信发送状态报告。

参数1:接收者手机号码,参数2:短信内容, 参数3:messageId即该条短信的唯一标识, 不能重复

返回结果是json格式的字符串, code: 发送状态,0为成功。非0为发送失败,可从data中查看错误信息

错误代码表

错误码

原因

解决方案

100

参数格式错误

检查请求参数是否为空, 或手机号码格式错误

101

短信内容超过1000字

短信内容过长,请筛检或分多次发送

105

appId错误或应用不存在

请联系工作人员申请应用或检查appId是否输入错误

106

应用被禁止

请联系工作人员查看原因

107

ip错误

如果设置了ip白名单,系统会检查请求服务器的ip地址,已确定是否为安全的来源访问

108

短信余额不足

需要到用户中心进行充值

109

今日发送超过限额

如果设置了日发送数量,则每个接收号码不得超过这个数量

110

应用秘钥(AppSecret)错误

检查AppSecret是否输入错误,或是否已在用户中心进行了秘钥重置

111

账号不存在

请联系工作人员申请账号

1000

系统位置错误

请联系工作人员或技术人员检查原因

3)查看余额

通过该接口可查看当前剩余的短信条数

result = client.balance();

返回结果是 json 格式的字符串, code : 查询状态,0为成功,data 为剩余短信条数。非0为查询失败,可从data中查看错误信息

错误代码表同上

4)查询短信

接口描述

根据messageId查询已发送短信

result = client.findSmsByMessageId('dfee_dfdw_xdfd_dfdfd');

注: 必须是post请求,个人开发者域名使用sms_developer.zhenzikj.com,企业开发者域名使用sms.zhenzikj.com

请求参数

参数名称

必选

类型

描述

appId

string

应用id,可通过用户中心,应用详情查看

appSecret

string

应用秘钥,可通过用户中心,应用详情查看

messageId

string

信息id,对应发送短信接口的messageId字段

返回结果

返回结果是json格式的字符串,code: 查询状态,0为成功。非0为失败,可从data中查看错误信息

{

"code":0,

"data":{}

}

返回结果是json格式的字符串, code: 查询状态,0为成功,data短信信息的json字符串

3.代码

我们学习完文档之后,学习到的代码如下:

# -*- coding: utf-8 -*-

# @Time : 2019/7/22 15:00

# @Author : hang1720

# @Site :

# @File : send_message.py

# @Software: PyCharm

import zhenzismsclient as smsclient

# 生成随机验证码

import random

code = ""

for num in range(0, 6):

code = code + str(random.randint(0, 9))

# 参数

# apiUrl为请求地址

apiUrl = "http://sms_developer.zhenzikj.com"

appId = "101**6" # 请在这里输入你的`appid`

appSecret = "YzNmY2MyNGItYz********Q0LWJhMTEtNjEyYTY3MWZjZDky" # 请在这里输入你的`appSecret`

# 初始化ZhenziSmsClient

client = smsclient.ZhenziSmsClient(apiUrl, appId, appSecret)

phone_num = input("请输入接受信息的手机号:")

msg = "%s,您的验证码是%s,5分钟内有效,请注意保密。" % (phone_num, code)

result = client.send(phone_num, msg)

print(result)

今天我们就先学习都这里,后面如何在项目中使用,等我们学完 redis ,我会再给大家讲解。

python按照号段生成手机号接收验证码,「 python 」 python 实现短信验证码相关推荐

  1. python按照号段生成手机号接收验证码_django 发送手机验证码的示例代码

    一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商 ...

  2. python按照号段生成手机号接收验证码_用Python判断手机号码的运营商

    现在的APP一般在注册应用的时候,都会让用户输入手机号码,在短信验证之前首先会验证号码的真实性,如果是不存在的号码,就不会发送验证码.检验规则如下: 长度不小于11位 是移动,联通,电信号段中的任意一 ...

  3. python按照号段生成手机号接收验证码,验证手机号码格式的正则表达式编写思路详解...

    一.获取目前中国三大运营商的手机号码段 如上图我们可以根据不同运营商的号码段来编写正则,也可以进行统一校验的编写,我这边主要是编写统一校验的. 二.思路 1.为了得到号码段的规律,我们可以把它们先进行 ...

  4. 【畅购商城】校验用户名、手机号以及前置技术Redis和阿里大鱼短信验证码

    搭建环境 后端web服务:changgou4-service-web 修改pom.xml文档 <?xml version="1.0" encoding="UTF-8 ...

  5. Flask项目实战——6—(前台用户模型、前台登录注册、图形验证码、手机短信验证码、添加表单验证短信验证码请求)

    1.前台用户模型 前台用户模型定义 创建前台模型文件 apps/front/models.py # -*- encoding: utf-8 -*- """ @File : ...

  6. c语言短信验证码,Web项目中手机注册短信验证码实现的全流程及代码

    使用的是榛子云短信平台, 官网地址:http://smsow.zhenzikj.com 后端使用了springMvc,前端用的是jsp + jquery 下载demo: https://downloa ...

  7. java web项目登录短信验证码_如何在Web项目完成短信验证码

    在做远程智能水表管理系统这个过程有一个功能是在注册页面可以使用手机注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 短信验证码实现流程 1.构造手机验证码:使用random对象生 ...

  8. java短信验证码功能发送的验证码如何校验_Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口( ...

  9. php tp框架验证码,TP5框架使用腾讯短信验证码类库

    接到美国客户需求,在商城添加地址时候添加手机号需要进行短信校验,客户想使用腾讯云国际短信,看了下官方文档,总的来说太繁琐了,一些功能和api都不是我所需要的, 以下是整理出来的精简版api供框架使用, ...

最新文章

  1. python用什么开发平台_一般来说,python平台开发有什么作用?
  2. RAP、Mock.js、Vue.js、Webpack
  3. GSON的使用以及GsonFormat工具的安装
  4. python如何拟合三维平面(拟合Intel Realsense D435深度数据点)
  5. Python学习笔记:模块
  6. C语言程序main入口函数
  7. html输入框点击后去掉默认文字颜色,input的一些默认样式的更改
  8. 看了三张照片,这个AI只用20分钟破获六年“悬案”
  9. 2012-01-17-04
  10. 电脑刷机重装系统_一键刷机工具
  11. 数据产品-产品经理必备的七大文档
  12. CentOS 系统修复
  13. 微软应用商店安装包_微软苦恼了!微博UWP客户端停止服务:大家都用浏览器去了?...
  14. 计算机操作员 word2003 设置表格的跨页断行属性,不可以,word中的表格属性不勾选“允许跨页断行”为什么还是断行了?-为什么word跨页表格,word表格不能跨页...
  15. 移动echarts地图省份名称的位置
  16. 囚徒困境困境_所以你现在看到了社会困境
  17. 光引发剂 907/UV光固化引发剂/阳离子光引发剂320/水性无味引发剂
  18. 归并排序(mergeSort)代码实现
  19. 【向重复工作说不】c#之模拟鼠标操作
  20. 中国医科大学护理学专业远程教育招生

热门文章

  1. 查询英文期刊缩写的网站
  2. VS_Code快捷自定义代码块,助你一臂之力
  3. 蓝桥杯2014省赛——等额本金(Java)
  4. 小程序近期频繁更新 背后原因全面解读
  5. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(五) 之 加好友,加群流程,消息管理和即时消息提示的实现...
  6. 基于Arduino的土壤湿度检测
  7. 小红书竞品分析_小红书与网易考拉 竞品分析报告
  8. 【LeetCode】871. Minimum Number of Refueling Stops 解题报告(Python)
  9. 一年赚上亿的生意_甩过梅艳芳,做生意一年赚几亿,他竟然火了快四十年
  10. 基层管理之正负向激励