logo
logo
请输入关键词搜索产品或者文档
中国

中国站

创蓝云智

国际站

Innopaas

短信发送

更新时间:2026-10-09 14:28:59

接入准备

准备事项说明
完成企业认证和实名认证
  • 根据运营商实名发送短信的要求,使用国内文本短信前需登录控制台完成企业认证和实名认证,否则无法报备签名,也无法正常发送短信。
  • 所需材料清单请查阅实名材料说明。
获取 API 账号和密码调用短信接口所需的账号和密码,登录控制台获取,登录账号为注册开户的手机号。
  • 请先选择对应账号类型,分为验证码、通知、营销三类账号。
  • 子账号可单独登录控制台,也可在其主账号下查看,具体如下图所示。
主账号获取示例
子账号获取示例
配置 IP 白名单登录控制台,在对应 API 账号下添加服务器出口 IP 白名单,否则接口将拦截本次请求。
  • 子账号的 IP 白名单需登录对应子账号后配置。
IP 白名单配置示例
获取模板 ID模板审核通过后方可使用,可登录控制台获取,也可通过 模板管理 接口获取。
  • 主账号后台无法直接查看子账号的模板,需单独登录子账号或通过 API 获取。
模板查看示例
获取短信签名签名审核通过后方可使用,可登录控制台获取,也可通过 签名管理 接口获取。
  • 主账号后台可查看子账号的签名。
签名查看示例

发送规范

短信格式

正文可包含链接、地址,并支持换行。营销短信退订语当前仅支持“拒收请回复R”(不支持小写 r),且必须位于整条短信内容的最末尾;该规则后续可能随工信部政策调整。

短信类型短信模板示例短信格式短信内容示例
验证码账号您正在申请手机注册,验证码为:{s},5分钟内有效!【短信签名】+ 正文(仅包含验证类文案)【创蓝云智】您正在申请手机注册,验证码为:123456,5分钟内有效!
通知短信账号尊敬的客户,您购买的会员卡已于{s}正式到期。如您要继续使用,请于{s}前及时续费或重新购买。【短信签名】+ 正文(非推广类通知文案,例如物流通知)【创蓝云智】尊敬的客户,您购买的会员卡已于11月29日正式到期。如您要继续使用,请于11月29日前及时续费或重新购买。
会员营销账号双十一重磅来袭,晚20点满600送{s}!详见www.chuanglan.com{s}拒收请回复R【短信签名】+ 推广类正文(营销专用账号)+ 退订语【创蓝云智】双十一重磅来袭,晚20点满600送600!详见www.chuanglan.com/dsdf5162拒收请回复R

发送时间限制

  • 验证码(YZM 开头)、通知(N 开头)、会员营销(M 开头)三类账号默认无发送时间限制;但 M 账号在 22:00 之后发送成功率会明显下降,并可能被拦截,如有疑问请联系商务经理。
  • 特殊类型账号默认发送时段为 08:00–20:00,不在该时段内提交的请求将被接口拦截并返回报错;如需调整发送时段,请联系商务经理。

模板 ID 发送接口

注意事项

  • 如需状态回执,请传入 "report"="true",否则无法获取状态回执。
  • 调用接口返回错误时,请根据响应码提示检查请求参数及其取值是否正确,详见文末提交响应码说明。
  • 更多发送问题,请查阅短信发送 FAQ。
  • 如需了解计费规则,请查阅计费说明。
  • 账户提供默认余额提醒,详情请查阅余额提醒文档。

请求地址

  • 请求方式:POST
  • Content-Type:application/json
  • 编码格式:UTF-8
  • 接口地址:https://smssh.253.com/msg/sms/v2/tpl/send

加密算法

  • md5Password = API 密码的 MD5 值(32 位小写),即 md5(password)。
  • 使用平台密钥 md5Password,与请求参数中的 timestamp、nonce 进行 HmacSHA256Hex 签名,生成 makeSignature,并通过请求头传递。
// 第三方工具类,需引入以下Maven依赖
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.HmacUtils;

public String makeSignature(String md5Password, String timestamp, String nonce) {
   String str = generateStr(md5Password, timestamp, nonce);
    return HmacUtils.hmacSha256Hex(md5Password, str.replaceAll("\\s+", ""));
}

/**
 * 签名待处理的字符串拼接
 */
public static String generateStr(String md5Password, String timestamp, String nonce){
    String[] array = new String[] { md5Password, timestamp, nonce};
    StringBuffer sb = new StringBuffer();
    // 字符串排序
    Arrays.sort(array);
    for (int i = 0; i < 3; i++) {
        sb.append(array[i]);
    }
    return sb.toString();
}

请求头参数

参数名称类型是否必传描述示例
X-QA-Hmac-SignatureString条件必传加密鉴权签名
  • 使用加密鉴权时:传入 makeSignature 的结果,请求体中无需再传 password。
  • 不使用加密鉴权时:该 Header 传空字符串 "",请求体中 password 必传。
签名原始串为 md5Password、timestamp、nonce 按字典序排序后拼接(见上方算法)。
"a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90"

请求体参数

参数名称类型是否必传描述示例
accountString是API 账号,登录控制台获取,获取方式请查阅操作指引。"account":"N6000001"
passwordString条件必传API 密码,与 X-QA-Hmac-Signature 二选一;未使用加密鉴权时必传。登录控制台获取,获取方式请查阅操作指引。"password":"123456"
nonceString是32 位随机字符串,自定义生成,用于签名校验、防止重放。"nonce":"2e6eceb5737b473284c930c8ef79090e"
timestampString是秒级时间戳,10 位;有效期1分钟。"timestamp":"1631865523"
phoneNumbersString是短信接收手机号
  • 无需添加区号或“+”号,仅填写 11 位手机号。
  • 多个号码使用英文逗号分隔,单次不超过 1000 个。
"phoneNumbers":"15800000000,15300000000"
templateParamJsonString条件必传变量参数值,JSON 数组的字符串形式(需转义),使用变量模板时必传。
  • 每个手机号对应一组 JSON 对象,每组对象的键名个数须与模板变量个数一致。
  • 键名按 param1、param2、param3 依次命名,param1 对应第一个变量 {s},以此类推。
  • 示例:
    短信模板:尊敬的{s},恭喜您成功充值{s}元。
    转义前:[{"param1":"张三","param2":"13"},{"param1":"李四","param2":"88"}]
    转义后:"[{\"param1\":\"张三\",\"param2\":\"13\"},{\"param1\":\"李四\",\"param2\":\"88\"}]"
    填充后第一个号码:尊敬的张三,恭喜您成功充值13元。
    填充后第二个号码:尊敬的李四,恭喜您成功充值88元。
"templateParamJson":"[{\"param1\":\"张三\",\"param2\":\"13\"},{\"param1\":\"李四\",\"param2\":\"88\"}]"
templateIdString是模板 ID
  • 模板与 API 账号为绑定关系,主、子账号不可混淆传入。
  • 可通过模板列表接口查询,或登录控制台“模板管理”查看。
"templateId":"1111111"
signatureString条件必传短信签名:若报备模板未关联签名则必传,需通过该参数携带签名;若模板报备时已关联签名,则无需传递。"signature":"【创蓝云智】"
reportString否状态回执开关,传 "true" 开启,不传默认为 "false";不开启则无法获取状态回执。回执是判断短信是否成功送达的重要依据,详见状态回执文档。"report":"true"
callbackUrlString否状态回执回调地址,须为以 http:// 或 https:// 开头的完整地址,不可包含空格,否则会导致推送失败;可通过本参数传入,也可在控制台配置,详见控制台操作指引。"callbackUrl":"https://your-domain.com/callback"
uidString否自定义参数,如订单号或发送流水号,状态回执会原样回传,最大支持 256 个字符。"uid":"321abc"
extendString否下发短信号码扩展码,用于匹配上行回复,上行报告会回传;须为不超过 5 位的数字,不传默认为空。"extend":"555"

请求示例

请求头(Request Header):
X-QA-Hmac-Signature: a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90
Content-Type: application/json

请求体(Body,使用加密鉴权,故不传 password):
{
  "account": "N6000001",
  "timestamp": "1752143733",
  "nonce": "x4zfk0y5foqwx6cbnw3bfmimy98abqs1",
  "phoneNumbers": "17601337176,15100159057",
  "templateId": "1021143438",
  "templateParamJson": "[{\"param1\":\"张三\",\"param2\":\"13\"},{\"param1\":\"李四\",\"param2\":\"88\"}]",
  "signature": "【创蓝云智】",
  "report": "true",
  "callbackUrl": "https://your-domain.com/callback",
  "uid": "test_001",
  "extend": "01"
}

响应体参数

参数名称类型描述示例
codeString提交响应码,返回 "000000" 表示提交成功,其他值表示失败(详见文末提交响应码说明)"code":"000000"
msgIdString消息 ID,32 位纯数字字符串。"msgId":"25071516453300902203000007708373"
timeString响应时间,格式为 yyyyMMddHHmmss。"time":"20251204162433"
successNumString提交成功数量,参数校验失败时不返回。"successNum":"1"
failNumString提交失败数量,参数校验失败时不返回。"failNum":"0"
errorMsgString提交响应码中文说明,提交成功时返回空字符串。"errorMsg":""

响应示例

{
  "code": "000000",
  "failNum": "0",
  "successNum": "2",
  "msgId": "25071018345400902898000000000001",
  "time": "20250710183454",
  "errorMsg": ""
}

多语言调用示例

Java

package send;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.HmacUtils;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.*;

public class SmsClient {

    // 账号信息(建议后续通过配置或环境变量注入)
    private static final String ACCOUNT = "M122343";
    private static final String PASSWORD = "******";
    private static final String SEND_URL = "https://smssh.253.com/msg/sms/v2/tpl/send";

    public static void main(String[] args) {
        try {
            String timestamp = String.valueOf(System.currentTimeMillis() / 1000);
            String nonce = UUID.randomUUID().toString().replace("-", "");

            // 构建模板参数
            List<Map<String, String>> templateParams = assembleTemplateParams();
            String templateParamJson = JSONObject.toJSONString(templateParams);

            // 构建请求参数
            Map<String, Object> requestMap = new HashMap<>();
            requestMap.put("account", ACCOUNT);
            requestMap.put("timestamp", timestamp);
            requestMap.put("nonce", nonce);
            requestMap.put("phoneNumbers", "15200000000,15100000000");
            requestMap.put("templateId", "1021143438");
            requestMap.put("templateParamJson", templateParamJson);
            requestMap.put("signature", "【222】");
            requestMap.put("report", "true");
            requestMap.put("callbackUrl", "");
            requestMap.put("uid", "test_001");
            requestMap.put("extend", "01");

            String jsonBody = JSONObject.toJSONString(requestMap);

            // 生成签名
            String md5Password = DigestUtils.md5Hex(PASSWORD);
            String signature = makeSignature(md5Password, timestamp, nonce);

            // 发送请求
            String response = sendSmsByPost(SEND_URL, jsonBody, signature);
            System.out.println("响应结果:" + response);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static List<Map<String, String>> assembleTemplateParams() {
        List<Map<String, String>> list = new ArrayList<>();

        Map<String, String> map1 = new HashMap<>();
        map1.put("param1", "张1");
        map1.put("param2", "张2");

        Map<String, String> map2 = new HashMap<>();
        map2.put("param1", "李1");
        map2.put("param2", "李2");

        list.add(map1);
        list.add(map2);

        return list;
    }

    public static String sendSmsByPost(String path, String postContent, String xQAHmacSignature) throws IOException {
        URL url = new URL(path);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setConnectTimeout(10000);
        conn.setReadTimeout(10000);
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        conn.setRequestProperty("X-QA-Hmac-Signature", xQAHmacSignature);

        try (OutputStream os = conn.getOutputStream()) {
            os.write(postContent.getBytes(StandardCharsets.UTF_8));
            os.flush();
        }

        int code = conn.getResponseCode();
        if (code != HttpURLConnection.HTTP_OK) {
            throw new IOException("HTTP 请求失败,状态码:" + code);
        }

        try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            return sb.toString();
        }
    }

    public static String makeSignature(String md5Password, String timestamp, String nonce) {
        String str = generateStr(md5Password, timestamp, nonce);
        return HmacUtils.hmacSha256Hex(md5Password, str.replaceAll("\\s+", ""));
    }

    private static String generateStr(String md5Password, String timestamp, String nonce) {
        String[] array = new String[]{md5Password, timestamp, nonce};
        Arrays.sort(array);
        StringBuilder sb = new StringBuilder();
        for (String s : array) {
            sb.append(s);
        }
        return sb.toString();
    }
}

Python

import hashlib
import hmac
import json
import time
import uuid
import requests

# 账号信息(建议后续通过配置或环境变量注入)
ACCOUNT = "M122343"
PASSWORD = "******"
SEND_URL = "https://smssh.253.com/msg/sms/v2/tpl/send"

def assemble_template_params():
    """
    构建模板参数
    """
    list_data = []

    map1 = {"param1": "张1", "param2": "张2"}
    map2 = {"param1": "李1", "param2": "李2"}

    list_data.append(map1)
    list_data.append(map2)

    return list_data

def make_signature(md5_password, timestamp, nonce):
    """
    生成签名
    """
    str_data = generate_str(md5_password, timestamp, nonce)
    signature = hmac.new(md5_password.encode('utf-8'), str_data.encode('utf-8'), hashlib.sha256).hexdigest()
    return signature

def generate_str(md5_password, timestamp, nonce):
    """
    拼接签名字符串
    """
    array = [md5_password, timestamp, nonce]
    array.sort()
    return ''.join(array)

def send_sms_by_post(path, post_content, x_qa_hmac_signature):
    """
    发送 HTTP POST 请求
    """
    headers = {
        "Content-Type": "application/json; charset=UTF-8",
        "X-QA-Hmac-Signature": x_qa_hmac_signature
    }

    response = requests.post(path, data=post_content.encode('utf-8'), headers=headers)
    if response.status_code != 200:
        raise Exception(f"HTTP 请求失败,状态码:{response.status_code}")
    return response.text

def main():
    try:
        timestamp = str(int(time.time()))
        nonce = str(uuid.uuid4()).replace("-", "")

        # 构建模板参数
        template_params = assemble_template_params()
        template_param_json = json.dumps(template_params, ensure_ascii=False)

        # 构建请求参数
        request_map = {
            "account": ACCOUNT,
            "timestamp": timestamp,
            "nonce": nonce,
            "phoneNumbers": "15200000000,15100000000",
            "templateId": "1021143438",
            "templateParamJson": template_param_json,
            "signature": "【222】",
            "report": "true",
            "callbackUrl": "",
            "uid": "test_001",
            "extend": "01"
        }

        json_body = json.dumps(request_map, ensure_ascii=False)

        # 生成签名
        md5_password = hashlib.md5(PASSWORD.encode('utf-8')).hexdigest()
        signature = make_signature(md5_password, timestamp, nonce)

        # 发送请求
        response = send_sms_by_post(SEND_URL, json_body, signature)
        print("响应结果:" + response)

    except Exception as e:
        print(e)

if __name__ == "__main__":
    main()

PHP

<?php

// 账号信息(建议后续通过配置或环境变量注入)
const ACCOUNT  = 'M122343';
const PASSWORD = '******';
const SEND_URL = 'https://smssh.253.com/msg/sms/v2/tpl/send';

try {
    $timestamp = (string) time();
    $nonce     = generateNonce();

    // 构建模板参数
    $templateParams   = assembleTemplateParams();
    $templateParamJson = json_encode($templateParams, JSON_UNESCAPED_UNICODE);

    // 构建请求参数
    $requestMap = [
        'account'           => ACCOUNT,
        'timestamp'         => $timestamp,
        'nonce'             => $nonce,
        'phoneNumbers'      => '15200000000,15100000000',
        'templateId'        => '1021143438',
        'templateParamJson' => $templateParamJson,
        'signature'         => '【222】',
        'report'            => 'true',
        'callbackUrl'       => '',
        'uid'               => 'test_001',
        'extend'            => '01',
    ];

    $jsonBody = json_encode($requestMap, JSON_UNESCAPED_UNICODE);

    // 生成签名
    $md5Password = md5(PASSWORD);
    $signature   = makeSignature($md5Password, $timestamp, $nonce);

    // 发送请求
    $response = sendSmsByPost(SEND_URL, $jsonBody, $signature);
    echo "响应结果:{$response}\n";

} catch (Exception $e) {
    echo $e->getMessage() . "\n";
}

function assembleTemplateParams(): array
{
    return [
        ['param1' => '张1', 'param2' => '张2'],
        ['param1' => '李1', 'param2' => '李2'],
    ];
}

function sendSmsByPost(string $path, string $postContent, string $xQAHmacSignature): string
{
    $ch = curl_init($path);
    curl_setopt_array($ch, [
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => $postContent,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_TIMEOUT        => 10,
        CURLOPT_HTTPHEADER     => [
            'Content-Type: application/json; charset=UTF-8',
            'X-QA-Hmac-Signature: ' . $xQAHmacSignature,
        ],
    ]);

    $response = curl_exec($ch);
    if ($response === false) {
        $err = curl_error($ch);
        curl_close($ch);
        throw new Exception("cURL 请求失败:{$err}");
    }

    $httpCode = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode !== 200) {
        throw new Exception("HTTP 请求失败,状态码:{$httpCode}");
    }

    return (string) $response;
}

function makeSignature(string $md5Password, string $timestamp, string $nonce): string
{
    $str = generateStr($md5Password, $timestamp, $nonce);
    return hash_hmac('sha256', preg_replace('/\s+/', '', $str), $md5Password);
}

function generateStr(string $md5Password, string $timestamp, string $nonce): string
{
    $array = [$md5Password, $timestamp, $nonce];
    sort($array, SORT_STRING);
    return implode('', $array);
}

function generateNonce(): string
{
    return bin2hex(random_bytes(16));
}

C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Web.Script.Serialization;

namespace SmsClientDemo
{
    class Program
    {
        // 账号信息(建议后续通过配置或环境变量注入)
        private const string ACCOUNT = "M122343";
        private const string PASSWORD = "******";
        private const string SEND_URL = "https://smssh.253.com/msg/sms/v2/tpl/send";

        static void Main(string[] args)
        {
            try
            {
                string timestamp = ((DateTimeOffset)DateTime.Now).ToUnixTimeSeconds().ToString();
                string nonce = Guid.NewGuid().ToString("N");

                // 构建模板参数
                var templateParams = AssembleTemplateParams();
                var jss = new JavaScriptSerializer();
                string templateParamJson = jss.Serialize(templateParams);

                // 构建请求参数
                var requestMap = new Dictionary<string, object>
                {
                    { "account", ACCOUNT },
                    { "timestamp", timestamp },
                    { "nonce", nonce },
                    { "phoneNumbers", "15200000000,15100000000" },
                    { "templateId", "1021143438" },
                    { "templateParamJson", templateParamJson },
                    { "signature", "【222】" },
                    { "report", true },
                    { "callbackUrl", "" },
                    { "uid", "test_001" },
                    { "extend", "01" }
                };

                string jsonBody = jss.Serialize(requestMap);

                // 生成签名
                string md5Password = ComputeMD5(PASSWORD);
                string signature = MakeSignature(md5Password, timestamp, nonce);

                // 发送请求
                string response = SendSmsByPost(SEND_URL, jsonBody, signature);
                Console.WriteLine("响应结果:" + response);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }
        }

        private static List<Dictionary<string, string>> AssembleTemplateParams()
        {
            var list = new List<Dictionary<string, string>>();

            var map1 = new Dictionary<string, string>
            {
                { "param1", "张1" },
                { "param2", "张2" }
            };

            var map2 = new Dictionary<string, string>
            {
                { "param1", "李1" },
                { "param2", "李2" }
            };

            list.Add(map1);
            list.Add(map2);

            return list;
        }

        private static string ComputeMD5(string input)
        {
            using (var md5 = MD5.Create())
            {
                byte[] inputBytes = Encoding.UTF8.GetBytes(input);
                byte[] hashBytes = md5.ComputeHash(inputBytes);

                StringBuilder sb = new StringBuilder();
                foreach (byte b in hashBytes)
                {
                    sb.Append(b.ToString("x2"));
                }
                return sb.ToString();
            }
        }

        private static string MakeSignature(string md5Password, string timestamp, string nonce)
        {
            string str = GenerateStr(md5Password, timestamp, nonce);
            return ComputeHmacSha256Hash(str, md5Password);
        }

        private static string GenerateStr(string md5Password, string timestamp, string nonce)
        {
            string[] array = { md5Password, timestamp, nonce };
            Array.Sort(array);
            return string.Concat(array);
        }

        private static string ComputeHmacSha256Hash(string input, string key)
        {
            using (var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key)))
            {
                byte[] hashBytes = hmac.ComputeHash(Encoding.UTF8.GetBytes(input));
                StringBuilder sb = new StringBuilder();
                foreach (byte b in hashBytes)
                {
                    sb.Append(b.ToString("x2"));
                }
                return sb.ToString();
            }
        }

        private static string SendSmsByPost(string path, string postContent, string xQAHmacSignature)
        {
            var request = (HttpWebRequest)WebRequest.Create(path);
            request.Method = "POST";
            request.ContentType = "application/json; charset=UTF-8";
            request.Headers.Add("X-QA-Hmac-Signature", xQAHmacSignature);
            request.Timeout = 10000;
            request.ReadWriteTimeout = 10000;

            byte[] byteArray = Encoding.UTF8.GetBytes(postContent);
            request.ContentLength = byteArray.Length;

            using (Stream dataStream = request.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
            }

            using (var response = (HttpWebResponse)request.GetResponse())
            {
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new Exception($"HTTP 请求失败,状态码:{(int)response.StatusCode}");
                }

                using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
                {
                    return reader.ReadToEnd();
                }
            }
        }
    }
}

提交响应码说明

状态码描述问题处理人
000000提交成功无
101无此用户(account参数要传API账号不是登录后台的账号,如N111111;或API账号关停了需要联系官网客服解禁)技术支持
102密码错(请确认密码是否一致正确,请直接复制避免手动输入错误)技术支持
103提交过快(提交速度超过流速限制)技术支持
104系统忙(因平台侧原因,暂时无法处理提交的短信)技术支持
105敏感短信(短信内容包含敏感词)客服
106消息长度错(>1036 或<=0)技术支持
107包含错误的手机号码技术支持
108手机号码个数错(手机号包含了中文符号;手机号个数错了,群发>1000 或<=0)技术支持
109无发送额度(当前使用的API账号下没有发送额度)商务
110不在发送时间内(联系客服或商务解决)商务
111超出该账户当月发送额度限制(联系客服或商务解决)商务
112产品错误(通道出现异常,联系商务解决)商务
113扩展码格式错(非数字或者长度不对)技术支持
114可用参数组个数错误(msg参数的变量符号固定使用"{$var}";变量符号在20个以内)技术支持
116签名不合法或未带签名(短信签名需要报备通过后才能使用;重保签名不可用)客服
117客户端IP错误(登录控制台在对应使用的API账号下加白ip)客服
118用户没有相应的发送权限(账号被禁止发送,联系客服或商务解禁)客服
119用户已过期客服
120违反防盗用策略(日发送限制,联系客服或商务解决)客服
123发送类型错误(cmpp协议的账户不能使用https协议方式,请联系我方技术修改)技术支持
124白模板匹配错误(接口传递的内容与报备的模板内容要完全一致,包括标点符号)客服
125匹配驳回模板,提交失败(联系客服或商务解决)客服
127定时发送时间格式错误(格式为 yyyyMMddHHmm)技术支持
128内容编码失败技术支持
129JSON 格式错误(header请求头是否生效:Content-Type:application/json;请求参数不是json格式)技术支持
130请求参数错误(缺少必填参数;参数跟接口地址不匹配,例如变量参数请求普通短信接口地址)技术支持
132消息长度错(>3500或<=0),超过短信最大支持字数技术支持
133单一手机号错误技术支持
134违反防盗策略, 超过月发送限制(联系客服或商务解决)技术支持
135超过同一手机号相同内容发送限制技术支持
136不可批量提交"验证码"短信技术支持
139超出安全发送时间(时间戳过期,时间戳时间跟请求接口的时间差异控制在30s以内)技术支持
140短信内容解密错误(秘钥没有使用正确)技术支持
144产品未上线限制日发送数量(签名报备选择的未上线会日限100条,联系客服调整)客服
145验签失败(验签不过,请参考对应接口的DEMO加签代码示例)技术支持
152MATERIAL_EXIST_ERROR (模板不存在)客服
153MESSAGE_LY_ERROR 消息长度错(>2000或者≤0)技术支持
154长短信拼接错误技术支持
155AIM_SEND_FAIL 转发失败技术支持
158退订语不符合规范,退订语现在只支持"拒收请回复R"。技术支持
159触发反轰炸策略技术支持
24小时热线 400-9669-253