发送短信功能

Posted bladecheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发送短信功能相关的知识,希望对你有一定的参考价值。

发送短信

需要借助第三方平台来发送短信,如阿里云、云通讯(对python3不友好)、腾讯云。在这里用的是腾讯云来作为示例

腾讯云中短信准备工作

1. 腾讯云官网注册、实名认证、登录(不废话、跳过)

2. 点击页面右上角“控制台”

3. 点击导航栏的云产品,可以看到各种产品,找到“短信”。第一次使用会调到“申请开通页面”,勾选同意、开始接入。(这是个人认证,企业认证还需要一些相关的认证材料)

4. 接入后有三大功能:应用列表、套餐包管理、SDK & API.

* 应用列表:管理应用的;
* 套餐包管理:管理套餐包的;
* SDK & API:就是一些相关的指南手册(开发指南);

5. 在应用列表页“添加应用”,添加后点进去(如应用名:技术栈)

6. 来到国内短信,点击短信内容配置

7. 短信签名 -> 创建签名:要用到微信公众号或小程序(微信公众号注册,首页截图),填写见图创建签名

8. 短信正文 -> 创建正文模板:填写见图短信正文。

9. 等待审核

技术图片
技术图片

后台开发

更多短信发送参考SDK & API中的开发指南:文档中心 > 短信 > SDK文档 > Python SDK https://cloud.tencent.com/document/product/382/11672

配置SDK

pip install qcloudsms_py

准备必要参数

# 短信应用 SDK AppID 以1400开头
appid = 1400009099  
# 短信应用 SDK AppKey 根据自己的短信应用配置
appkey = "9ff91d87c2cd7cd0ea762f141975d1df37481d48700d70ac37470aefc60f9bad"
# 需要发送短信的手机号码(非必填项,可在你的开发代码中传入)
phone_numbers = ["21212313123", "12345678902", "12345678903"]
# 短信模板ID,真实的模板 ID 需要在短信控制台中申请
template_id = 7839  # 这里的模板 ID`7839`只是示例,
# 签名,使用的是`签名内容`,而不是`签名ID`。这里的签名"腾讯云"只是示例,真实的签名需要在短信控制台中申请
sms_sign = "腾讯云"  # 发写个空字符串也行

指定模板 ID 单发短信

import random
from utils.logging import logger
from .settings import *
from qcloudsms_py import SmsSingleSender
ssender = SmsSingleSender(appid, appkey)
# 生成验证码
def get_code():
    code = ''
    for i in range(4):
        code += str(random.randint(0, 9))
    return code

def send_sms(mobile, code, exp):
    """
    发送短信
    :param mobile: 电话号码
    :param code: 验证码
    :param exp: 过期时间
    :return:
    """
    try:
        response = ssender.send_with_param(86, mobile, template_id, (code, exp), sign=sms_sign, extend="", ext="")
        # 短信发送成功的标识:没有异常且response大字典中的result为0
        if response and response['result']==0:
            return True
        logger.error('sms error: %s'% response['errmsg'])
        return
    except Exception as e:
        logger.error("sms error: %s" % e)
        return False
    
if __name__ == '__main__':
    code = get_code()
    print(code)
    result = send_sms('xxxxxxx',code,'1')  # 电话号码,验证码,过期时间
    print(result)

以上是关于发送短信功能的主要内容,如果未能解决你的问题,请参考以下文章

如何用Java实现短信自动发送功能

java如何实现发送短信验证码功能?

发送短信功能

java实现发送国际短信的功能

(二十三)ATP应用测试平台——阿里云短信发送功能集成

python项目_集成短信发送功能