aliyun_sms.py 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. #!/usr/bin/env python
  2. #coding=utf-8
  3. import json
  4. from aliyunsdkcore.client import AcsClient
  5. from aliyunsdkcore.request import CommonRequest
  6. from tencentcloud.common import credential
  7. from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
  8. from tencentcloud.sms.v20210111 import sms_client, models
  9. from tencentcloud.common.profile.client_profile import ClientProfile
  10. from tencentcloud.common.profile.http_profile import HttpProfile
  11. ############aliyun#######################
  12. client = AcsClient('LTAI5t8bioQxGXB1jtVugJcU', 'OdGWSBRjkJxaPjgmE38eQ8nzkI6nRk', 'cn-hangzhou')
  13. def send_verify_code(phone,code):
  14. """发送手机验证码
  15. """
  16. request = CommonRequest()
  17. request.set_accept_format('json')
  18. request.set_domain('dysmsapi.aliyuncs.com')
  19. request.set_method('POST')
  20. request.set_protocol_type('https') # https | http
  21. request.set_version('2017-05-25')
  22. request.set_action_name('SendSms')
  23. request.add_query_param('RegionId', "cn-hangzhou")
  24. request.add_query_param('PhoneNumbers', phone)
  25. request.add_query_param('SignName', "顽主杯")
  26. #request.add_query_param('TemplateCode', "SMS_243482769")
  27. request.add_query_param('TemplateCode', "SMS_243487831")
  28. request.add_query_param('TemplateParam', json.dumps({"code":code}))
  29. response = client.do_action(request)
  30. print(response)
  31. return True,u"success"
  32. def send_signup_success(phone,name):
  33. """报名成功
  34. """
  35. request = CommonRequest()
  36. request.set_accept_format('json')
  37. request.set_domain('dysmsapi.aliyuncs.com')
  38. request.set_method('POST')
  39. request.set_protocol_type('https') # https | http
  40. request.set_version('2017-05-25')
  41. request.set_action_name('SendSms')
  42. request.add_query_param('RegionId', "cn-hangzhou")
  43. request.add_query_param('PhoneNumbers', phone)
  44. request.add_query_param('SignName', "顽主杯")
  45. request.add_query_param('TemplateCode', "SMS_243950634")
  46. request.add_query_param('TemplateParam', json.dumps({"name":name}))
  47. response = client.do_action(request)
  48. print(response)
  49. return True,u"success"
  50. #################tencent######################
  51. SECRET_ID = "AKIDmOnEZjMm05xg4JNErW2KOI2FIC5nIl6H"
  52. SECRET_KEY = "5yhHpEQREsKZeo04xe7NQJ0UkstiJhsp"
  53. APPID = "1400799769"
  54. def get_tencent_clinet():
  55. # 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey。
  56. # 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中。
  57. # 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
  58. # SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi
  59. # cred = credential.Credential("secretId", "secretKey")
  60. cred = credential.Credential(SECRET_ID,SECRET_KEY)
  61. # 实例化一个http选项,可选的,没有特殊需求可以跳过。
  62. httpProfile = HttpProfile()
  63. # 如果需要指定proxy访问接口,可以按照如下方式初始化hp(无需要直接忽略)
  64. # httpProfile = HttpProfile(proxy="http://用户名:密码@代理IP:代理端口")
  65. httpProfile.reqMethod = "POST" # post请求(默认为post请求)
  66. httpProfile.reqTimeout = 10 # 请求超时时间,单位为秒(默认60秒)
  67. httpProfile.endpoint = "sms.tencentcloudapi.com" # 指定接入地域域名(默认就近接入)
  68. # 非必要步骤:
  69. # 实例化一个客户端配置对象,可以指定超时时间等配置
  70. clientProfile = ClientProfile()
  71. clientProfile.signMethod = "TC3-HMAC-SHA256" # 指定签名算法
  72. clientProfile.language = "en-US"
  73. clientProfile.httpProfile = httpProfile
  74. client = sms_client.SmsClient(cred, "ap-guangzhou", clientProfile)
  75. return client
  76. def send_verify_code(phone,code):
  77. """发送手机验证码
  78. """
  79. templateId = "2394364"
  80. client = get_tencent_clinet()
  81. req = models.SendSmsRequest()
  82. req.SmsSdkAppId = APPID
  83. # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名
  84. # 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看
  85. req.SignName = "顽主杯"
  86. # 模板 ID: 必须填写已审核通过的模板 ID
  87. # 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看
  88. req.TemplateId = templateId
  89. # 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,,若无模板参数,则设置为空
  90. req.TemplateParamSet = [code]
  91. # 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
  92. # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
  93. req.PhoneNumberSet = [phone]
  94. # 用户的 session 内容(无需要可忽略): 可以携带用户侧 ID 等上下文信息,server 会原样返回
  95. req.SessionContext = ""
  96. # 短信码号扩展号(无需要可忽略): 默认未开通,如需开通请联系 [腾讯云短信小助手]
  97. req.ExtendCode = ""
  98. # 国内短信无需填写该项;国际/港澳台短信已申请独立 SenderId 需要填写该字段,默认使用公共 SenderId,无需填写该字段。注:月度使用量达到指定量级可申请独立 SenderId 使用,详情请联系 [腾讯云短信小助手](https://cloud.tencent.com/document/product/382/3773#.E6.8A.80.E6.9C.AF.E4.BA.A4.E6.B5.81)。
  99. req.SenderId = ""
  100. resp = client.SendSms(req)
  101. # 输出json格式的字符串回包
  102. print(resp.to_json_string(indent=2))
  103. return True,u"success"
  104. def send_signup_success(phone,name):
  105. """报名成功
  106. """
  107. templateId = "2048076"
  108. client = get_tencent_clinet()
  109. req = models.SendSmsRequest()
  110. req.SmsSdkAppId = APPID
  111. # 短信签名内容: 使用 UTF-8 编码,必须填写已审核通过的签名
  112. # 签名信息可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-sign) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-sign) 的签名管理查看
  113. req.SignName = "顽主杯"
  114. # 模板 ID: 必须填写已审核通过的模板 ID
  115. # 模板 ID 可前往 [国内短信](https://console.cloud.tencent.com/smsv2/csms-template) 或 [国际/港澳台短信](https://console.cloud.tencent.com/smsv2/isms-template) 的正文模板管理查看
  116. req.TemplateId = TemplateId
  117. # 模板参数: 模板参数的个数需要与 TemplateId 对应模板的变量个数保持一致,,若无模板参数,则设置为空
  118. req.TemplateParamSet = [name]
  119. # 下发手机号码,采用 E.164 标准,+[国家或地区码][手机号]
  120. # 示例如:+8613711112222, 其中前面有一个+号 ,86为国家码,13711112222为手机号,最多不要超过200个手机号
  121. req.PhoneNumberSet = [phone]
  122. # 用户的 session 内容(无需要可忽略): 可以携带用户侧 ID 等上下文信息,server 会原样返回
  123. req.SessionContext = ""
  124. # 短信码号扩展号(无需要可忽略): 默认未开通,如需开通请联系 [腾讯云短信小助手]
  125. req.ExtendCode = ""
  126. # 国内短信无需填写该项;国际/港澳台短信已申请独立 SenderId 需要填写该字段,默认使用公共 SenderId,无需填写该字段。注:月度使用量达到指定量级可申请独立 SenderId 使用,详情请联系 [腾讯云短信小助手](https://cloud.tencent.com/document/product/382/3773#.E6.8A.80.E6.9C.AF.E4.BA.A4.E6.B5.81)。
  127. req.SenderId = ""
  128. resp = client.SendSms(req)
  129. # 输出json格式的字符串回包
  130. print(resp.to_json_string(indent=2))
  131. return True,u"success"
  132. if __name__ == "__main__":
  133. phone = "15982456282"
  134. #phone = "13883187629"
  135. code = "1234"
  136. send_verify_code(phone,code)
  137. #send_signup_success(phone,u"肖")