You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现SMS自动化,导入Excel批量发送带不同序列号的定制短信

完全可以实现,这是非常典型的Python自动化落地场景,整体实现逻辑清晰,没有太高的技术门槛。

核心实现思路

  • 读取Excel中存储的「手机号-对应序列号」映射关系
  • 将固定短信模板和对应序列号拼接,生成每个收件人专属的短信内容
  • 调用短信服务提供商的发送接口,批量提交发送请求
  • 可选步骤:将每条短信的发送结果(成功/失败/异常原因)回写到Excel,方便后续核对

前置依赖安装

需要用到三个第三方库,直接执行以下命令安装即可:

pip install pandas openpyxl requests

其中pandas用于快速读取处理Excel数据,openpyxl是处理.xlsx格式文件的依赖,requests用于调用短信服务的HTTP接口。

可直接复用的核心代码示例

注:你需要提前向短信服务提供商开通发送权限,拿到对应的接口地址、API密钥等信息,替换代码中对应占位符即可使用。

import pandas as pd
import requests
import time

# -------------------------- 替换成你自己的配置 --------------------------
SMS_API_URL = "你的短信服务商提供的接口地址"
SMS_API_KEY = "你的短信服务接口密钥"
# 短信模板,{} 是序列号的占位位置,按需修改模板内容
SMS_TEMPLATE = "您好,您的专属查询序列号为:{},如需咨询可联系客服。"
EXCEL_FILE_PATH = "待发送的手机号序列号列表.xlsx" # 你的Excel文件路径
# ----------------------------------------------------------------------

# 读取Excel数据,默认Excel中两列的列名是 phone(手机号)、serial_number(序列号),可根据你的实际表头调整
df = pd.read_excel(EXCEL_FILE_PATH, engine="openpyxl")
# 过滤掉手机号或序列号为空的无效行
df = df.dropna(subset=["phone", "serial_number"])

send_result_list = []
for _, row in df.iterrows():
    # 取当前行的手机号和序列号
    phone = str(row["phone"]).strip()
    serial_num = str(row["serial_number"]).strip()
    # 拼接生成当前收件人的专属短信内容
    sms_content = SMS_TEMPLATE.format(serial_num)

    # 调用短信发送接口,请求参数需要根据你使用的服务商的接口文档调整
    request_payload = {
        "api_key": SMS_API_KEY,
        "mobile": phone,
        "content": sms_content
    }
    try:
        response = requests.post(SMS_API_URL, data=request_payload, timeout=10)
        # 成功判断逻辑需要根据服务商的返回规则调整,以下为示例
        if response.status_code == 200 and response.json().get("code") == 0:
            send_result = "发送成功"
            print(f"手机号{phone}发送成功")
        else:
            send_result = f"发送失败:{response.text}"
            print(f"手机号{phone}发送失败:{response.text}")
    except Exception as e:
        send_result = f"发送异常:{str(e)}"
        print(f"手机号{phone}发送异常:{str(e)}")
    
    send_result_list.append(send_result)
    # 控制发送频率,避免触发服务商的限流规则,间隔时间可按需调整
    time.sleep(0.5)

# 将发送结果回写到Excel,生成结果文件
df["发送结果"] = send_result_list
df.to_excel("短信发送结果汇总.xlsx", index=False, engine="openpyxl")

注意事项

  • 正式批量发送前,先填入自己的手机号做测试,确认短信内容展示、接收都正常再全量发送
  • 不要将API密钥等敏感信息硬编码在代码中,建议存入环境变量或者单独的非公开配置文件
  • 提前确认短信服务商的接口限流规则,调整代码中的发送间隔,避免因请求频率过高被拦截
  • 可以增加简单的手机号格式校验逻辑,过滤掉不符合规则的无效号码,避免浪费短信配额

内容的提问来源于stack exchange,提问作者Kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:24:01