全部產品
Search
文件中心

Short Message Service:Python SDK調用樣本

更新時間:Mar 05, 2026

阿里雲官方提供的 Python 語言 SDK,用於便捷、安全地調用阿里雲簡訊發送等核心 API。該 SDK 基於阿里雲 OpenAPI 規範構建,封裝了認證、請求籤名、HTTP 通訊、錯誤處理等底層邏輯,使開發人員能夠專註於商務邏輯,快速整合簡訊能力。

安裝

系統要求

  • Python 版本:3.7 及以上。

  • 作業系統:Windows / macOS / Linux(無特殊限制)。

  • 其他依賴:alibabacloud_tea_openapi(核心運行時)、alibabacloud_tea_util(工具庫)、urllib3(HTTP 用戶端)。

使用 pip 安裝

pip install alibabacloud_dysmsapi20180501

驗證安裝

import alibabacloud_dysmsapi20180501

# 輸出SDK具體版本號碼代表安裝成功
print("SDK Version:", alibabacloud_dysmsapi20180501.__version__)

認證配置

步驟一:建立RAM使用者並完成授權

重要

阿里雲主帳號擁有較高許可權,建議您通過RAM使用者進行API調用和日常營運。有關RAM使用者的更多資訊,請參見RAM使用者概覽

  • 建立RAM使用者:訪問建立RAM使用者,完成相關名稱設定,並選擇訪問配置使用永久 AccessKey 訪問,單擊確認後即可完成RAM使用者的建立。請及時儲存AccessKey資訊。

  • 為RAM使用者授權:訪問RAM使用者列表,找到您所建立的RAM使用者,單擊操作列的新增授權。在權限策略文本搜尋方塊中輸入AliyunDysmsFullAccess後選中此策略,單擊確認新增授權,即可完成授權操作。

說明
  • AliyunDysmsFullAccess管理簡訊服務的許可權。

  • AliyunDysmsReadOnlyAccess:唯讀訪問簡訊服務的許可權。

  • 如果您需要建立自訂許可權,請參見授權資訊

步驟二:擷取訪問憑證

請配置環境變數,通過環境變數讀取存取金鑰(AccessKey)。環境變數配置方法,請參見在Linux、macOS和Windows系統配置環境變數

說明
  • 為避免在代碼中寫入程式碼AccessKey而造成泄露,請通過配置環境變數的方式,來擷取AccessKey。

  • 本文程式碼範例以環境變數名ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET為例,進行後續操作。

安全最佳實務

  • 使用環境變數或Key Management Service儲存憑證。

  • 定期輪換存取金鑰。

  • 遵循最小許可權原則,為RAM使用者指派最小必要許可權。

  • 不要在日誌中列印憑證資訊。

  • 在生產環境中使用RAM角色而非主帳號憑證。

快速開始

程式碼範例

使用SDK調用傳送簡訊API的程式碼範例如下,請根據注釋完成參數填寫。

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys
import json

from typing import List

from alibabacloud_dysmsapi20180501.client import Client as Dysmsapi20180501Client
from alibabacloud_credentials.client import Client as CredentialClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dysmsapi20180501 import models as dysmsapi_20180501_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


def create_client() -> Dysmsapi20180501Client:
    """
    使用憑據初始化帳號 Client
    @return: Client
    @throws Exception
    """
    # 工程代碼建議使用更安全的無 AK 方式,憑據配置方式請參見:https://www.alibabacloud.com/help/document_detail/378659.html。
    credential = CredentialClient()
    config = open_api_models.Config(
        credential=credential
    )
    # Endpoint 請參考 https://api.aliyun.com/product/Dysmsapi
    config.endpoint = f'dysmsapi.aliyuncs.com'
    return Dysmsapi20180501Client(config)


def main(
    args: List[str],
) -> None:
    client = create_client()
    batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
        to='your_value',
        from_='your_value',
        message='your_value'
    )
    try:
        resp = client.batch_send_message_to_globe_with_options(batch_send_message_to_globe_request, util_models.RuntimeOptions())
        print(json.dumps(resp, default=str, indent=2))
    except Exception as error:
        # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        # 錯誤 message
        print(error.message)
        # 診斷地址
        print(error.data.get("Recommend"))


async def main_async(
    args: List[str],
) -> None:
    client = create_client()
    batch_send_message_to_globe_request = dysmsapi_20180501_models.BatchSendMessageToGlobeRequest(
        to='your_value',
        from_='your_value',
        message='your_value'
    )
    try:
        resp = await client.batch_send_message_to_globe_with_options_async(batch_send_message_to_globe_request, util_models.RuntimeOptions())
        print(json.dumps(resp, default=str, indent=2))
    except Exception as error:
        # 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
        # 錯誤 message
        print(error.message)
        # 診斷地址
        print(error.data.get("Recommend"))


if __name__ == '__main__':
    main(sys.argv[1:])

下載範例程式碼

也可以下載範例程式碼,直接運行。

  1. 訪問SendMessageToGlobe

  2. 在左側的參數配置頁簽,填寫需要的參數資訊,填寫樣本如下:

  • To 參數輸入樣本值:88691567****

  • Message 參數輸入樣本值:這是一條測試簡訊

最佳實務總結

效能最佳化

  • 啟用串連池:SDK 預設使用 urllib3 串連池,確保 max_idle_conns 配置合理(預設 50),避免頻繁建立 TCP 串連。

  • 非同步非阻塞:在高並發情境下,可結合 asyncioaiohttp(需自行封裝)實現真正的非同步呼叫。

安全建議

  • HTTPS 強制:始終使用 https:// 開頭的 endpoint,禁止降級到 HTTP。

  • 輸入驗證:嚴格校正 phone_numbers(正則匹配)、template_param(JSON 解析)、sign_name(白名單)等所有使用者輸入。

  • 日誌脫敏:在日誌中列印 phone_numbers 時,應進行掩碼處理(如 138****0000)。

資源管理

  • 用戶端複用Client 執行個體是安全執行緒的,應在整個應用生命週期內全域複用,避免頻繁建立銷毀。

  • 及時關閉:雖然 SDK 未提供顯式的 close() 方法,但其底層 HTTP 用戶端會在程式退出時自動清理資源。

相關文檔

  • 調用OpenAPI:

    SDK是最易於整合,且支援度最好的OpenAPI調用方式。本文以Python語言SDK調用OpenAPI,其他語言SDK的用法類似,更多資訊請參見簡訊服務SDK