数据监控 | 腾讯云SMS服务

Posted by Haauleon on September 1, 2021

  最近有接短信服务的需求,目前使用的是腾讯云短信服务,新用户可以获得 200 条免费短信,首次购买 1000 条短信才40块钱可以发两年。具体的需要到官网进行查看:https://console.cloud.tencent.com/smsv2


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from qcloudsms_py import SmsMultiSender, SmsSingleSender, sms
from qcloudsms_py.httpclient import HTTPError

# 腾讯云短信配置
TENCENT_SMS_APP_ID = '1400xxxxxx'             # 自己应用ID
TENCENT_SMS_APP_KEY = 'c0be97xxxxxxxxxxxx'    # 自己应用Key
TENCENT_SMS_SIGN = 'xxxxxxxxxxx公众号'        # 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)

# 短信接收者
phone = [
    '1397606xxxx',     # 陈xx
]


class SMSNotice:
    '''短信发送类'''

    def __init__(self):
        self.appid = TENCENT_SMS_APP_ID     # 自己应用ID
        self.appkey = TENCENT_SMS_APP_KEY   # 自己应用Key
        self.sms_sign = TENCENT_SMS_SIGN    # 自己腾讯云创建签名时填写的签名内容(使用公众号的话这个值一般是公众号全称或简称)
    
    def send_sms_single(self, phone_num, template_id, template_param_list):
        """
        单条发送短信
        :param phone_num: 手机号(字符串格式,如 '111111')
        :param template_id: 腾讯云短信模板ID
        :param template_param_list: 短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
        :return:
        """
        sender = SmsSingleSender(self.appid, self.appkey)
        try:
            response = sender.send_with_param(86, phone_num, template_id, template_param_list, sign=self.sms_sign)
        except HTTPError as e:
            response = {'result': 1000, 'errmsg': "网络异常发送失败"}
        return response

    def send_sms_multi(self, phone_num_list, template_id, param_list):
        """
        批量发送短信
        :param phone_num_list: 手机号列表(列表格式,如 ['11111', '22222'])
        :param template_id: 腾讯云短信模板ID
        :param param_list: 短信模板所需参数列表,例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
        :return:
        """
        sender = SmsMultiSender(self.appid, self.appkey)
        try:
            response = sender.send_with_param(86, phone_num_list, template_id, param_list, sign=self.sms_sign)
        except HTTPError as e:
            response = {'result': 1000, 'errmsg': "网络异常发送失败"}
        return response


if __name__ == '__main__':
    sms = SMSNotice()
    sms_msg = [888, 666]       # 正文模板例如:【验证码:{1},描述:{2}】,则传递参数 [888,666]按顺序去格式化模板
    sms_result = sms.send_sms_multi(phone, 1093459, sms_msg)