Files
vf_react/sms_sender.py
2025-12-12 00:48:51 +08:00

91 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
独立的短信发送脚本(绕过 eventlet DNS 问题)
使用方式:
python sms_sender.py <phone> <code> <template_id> <secret_id> <secret_key> <app_id> <sign_name>
返回值:
成功返回 0失败返回 1
"""
import sys
import json
def send_sms(phone, code, template_id, secret_id, secret_key, app_id, sign_name):
"""发送短信验证码"""
try:
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.sms.v20210111 import sms_client, models
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
cred = credential.Credential(secret_id, secret_key)
httpProfile = HttpProfile()
httpProfile.endpoint = "sms.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = sms_client.SmsClient(cred, "ap-beijing", clientProfile)
req = models.SendSmsRequest()
# 登录模板(2386540)需要2个参数验证码 + 有效期
# 注册模板(2386557)需要1个参数验证码
if template_id == "2386540": # 登录模板
template_params = [code, "5"]
else: # 注册模板或其他
template_params = [code]
params = {
"PhoneNumberSet": [phone],
"SmsSdkAppId": app_id,
"TemplateId": template_id,
"SignName": sign_name,
"TemplateParamSet": template_params
}
req.from_json_string(json.dumps(params))
resp = client.SendSms(req)
resp_json = json.loads(resp.to_json_string())
# 检查发送状态
send_status = resp_json.get('SendStatusSet', [])
if send_status:
status = send_status[0]
if status.get('Code') == 'Ok':
print(f"SMS sent successfully to {phone}")
return True
else:
print(f"SMS failed: Code={status.get('Code')}, Message={status.get('Message')}")
return False
else:
print(f"SMS response unexpected: {resp.to_json_string()}")
return False
except TencentCloudSDKException as err:
print(f"SMS SDK Error: {err}")
return False
except Exception as e:
print(f"SMS Unexpected error: {type(e).__name__}: {e}")
return False
if __name__ == "__main__":
if len(sys.argv) != 8:
print("Usage: python sms_sender.py <phone> <code> <template_id> <secret_id> <secret_key> <app_id> <sign_name>")
sys.exit(1)
phone = sys.argv[1]
code = sys.argv[2]
template_id = sys.argv[3]
secret_id = sys.argv[4]
secret_key = sys.argv[5]
app_id = sys.argv[6]
sign_name = sys.argv[7]
success = send_sms(phone, code, template_id, secret_id, secret_key, app_id, sign_name)
sys.exit(0 if success else 1)