教你用Python实现短信验证码的发送

 更新时间:2022年12月06日 11:37:26   作者:萤火虫的小尾巴  
当我们在注册一个网页时,有的网页会让必须要短信验证、邮箱验证,才可以进行账号的注册,下面这篇文章主要给大家介绍了关于用Python实现短信验证码发送的相关资料,需要的朋友可以参考下

1. 短信API平台

使用的短信API平台为:容联云(https://www.yuntongxun.com/)

开发者文档:http://doc.yuntongxun.com/pe/5a531a353b8496dd00dcdfe2

2. 使用官方提供的SDK实现短信发送

Python SDK 文档

Python SDK GitHub地址

2.1 安装SDK

pip install ronglian-sms-sdk -i https://pypi.tuna.tsinghua.edu.cn/simple

2.2 使用官方的测试用例进行测试

from ronglian_sms_sdk import SmsSDK

# accId = '容联云通讯分配的主账号ID'
accId = '...'
# accToken = '容联云通讯分配的主账号TOKEN'
accToken = '...'
# appId = '容联云通讯分配的应用ID'
appId = '...'


# 发送短信验证码
def send_message():
	# 初始化获取发送短信的对象
    sdk = SmsSDK(accId, accToken, appId)
    # tid = '容联云通讯平台创建的模板' 默认模板的编号为1
    tid = '1'  # tid的数据类型为str
    # mobile = '手机号1,手机号2' 多个手机号在字符串中使用 , 进行分隔
    mobile = '...'
    # 第一个参数为验证码 第二个参数为验证码的有效时间(对于短信模板1)
    datas = ('123456', 5)
    # 发送短信并接收返回结果
    resp = sdk.sendMessage(tid, mobile, datas)
    print(resp)


# 测试
if __name__ == '__main__':
    send_message()

返回的结果为json类型的字符串。

2.3 参数及其参数的查看

初始化方法

调用发送短信方法

短信模板:

默认短信模板的tid为1

至于其他的模板

发送手机号:

如果没有认证,测试环境下需要设置短信能够发送的测试手机号

响应参数

返回的为json类型的字符串

3. 单例模式实现短信发送

由于每次要发送短信都需要向实例化一个对象,当发送短信的并发数太大时,会对内存造成较大的压力,所以修改为采用单例模式实现。

from ronglian_sms_sdk import SmsSDK
import json

# accId = '容联云通讯分配的主账号ID'
accId = '...'
# accToken = '容联云通讯分配的主账号TOKEN'
accToken = '...'
# appId = '容联云通讯分配的应用ID'
appId = '...'

class SendSmsVerificationCode:
    """发送短信验证码的单例类"""

    def __new__(cls, *args, **kwargs):
        """
        发送短信验证码单例类的初始化方法
        :return: 返回一个发送短信验证码的对象
        """
        # 判断类中发送短信验证码的对象 _instance 是否已经存在
        # 如果不存在, 创建一个发送短信验证码的对象, 并将其作为类属性
        if not hasattr(cls, '_instance'):
            # 创建发送短信验证码的对象
            cls._instance = super(SendSmsVerificationCode, cls).__new__(cls, *args, **kwargs)
            # 创建SmsSDK对象作为 _instance 的对象属性
            cls._instance.sdk = SmsSDK(accId, accToken, appId)
        # 如果存在, 返回发送短信验证码的对象
        return cls._instance

    def send_message(self, mobile, datas, tid='1'):
        """
        发送短信的方法
        @params mobile 字符串类型  mobile = '手机号1,手机号2'
        @params tid tid = '容联云通讯平台创建的模板' 默认模板的编号为1
        @params datas 元组类型  第一个参数为验证码 第二个参数为验证码的有效时间(对于短信模板1)
        :return: 返回发送短信后的响应参数
        """
        # 发送短信
        resp = self.sdk.sendMessage(tid, mobile, datas)
        print(json.loads(resp), type(json.loads(resp)))
        return resp

# 测试
if __name__ == '__main__':
    sendSmsVerificationCode1 = SendSmsVerificationCode()
    sendSmsVerificationCode2 = SendSmsVerificationCode()
    sendSmsVerificationCode3 = SendSmsVerificationCode()
    print(sendSmsVerificationCode1)
    print(sendSmsVerificationCode2)
    print(sendSmsVerificationCode3)
    res = sendSmsVerificationCode1.send_message('...', ('123456', 5), '1')
    print(res)

总结

到此这篇关于用Python实现短信验证码发送的文章就介绍到这了,更多相关Python短信验证码发送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python爬取微信公众号文章图片并转为PDF

    python爬取微信公众号文章图片并转为PDF

    大家好,本篇文章主要讲的是python爬取微信公众号文章图片并转为PDF,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 解析Python 偏函数用法全方位实现

    解析Python 偏函数用法全方位实现

    这篇文章主要介绍了解析Python 偏函数用法全方位实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-06-06
  • Python时间处理模块Time和DateTime

    Python时间处理模块Time和DateTime

    这篇文章主要为大家介绍了Python时间处理模块Time和DateTime使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 详解pycharm连接不上mysql数据库的解决办法

    详解pycharm连接不上mysql数据库的解决办法

    这篇文章主要介绍了详解pycharm连接不上mysql数据库的解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 利用Python小工具实现3秒钟将视频转换为音频

    利用Python小工具实现3秒钟将视频转换为音频

    这篇文章主要介绍了利用Python小工具实现 3秒钟将视频转换为音频效果,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • python用opencv将标注提取画框到对应的图像中

    python用opencv将标注提取画框到对应的图像中

    这篇文章主要介绍了python用opencv将标注提取画框到对应的图像中,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python密码学一次性密码的实现

    python密码学一次性密码的实现

    这篇文章主要为大家介绍了python密码学一次性密码的实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python关于第三方日志的QA记录详解

    python关于第三方日志的QA记录详解

    这篇文章主要为大家介绍了python关于第三方日志的QA记录详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 教你用Python寻找重复文件并删除的脚本写法

    教你用Python寻找重复文件并删除的脚本写法

    这篇文章主要介绍了如何用Python寻找重复文件并删除,该脚本主要包括diskwalk,chechsum,find_dupes,delete模块,其中diskwalk模块是遍历文件的,给定路径,遍历输出该路径下的所有文件,需要的朋友可以参考下
    2022-01-01
  • Python内置函数issubclass()的具体使用

    Python内置函数issubclass()的具体使用

    issubclass()是Python中一个非常有用的内置函数,它提供了一种简单的方式来检查类的继承关系,本文主要介绍了Python内置函数issubclass()的具体使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2007-03-03

最新评论