解决方案

利用企业微信的 API 免费给自己的微信推送消息

第一步:注册企业微信(个人免费注册)

  1. 在电脑浏览器打开企业微信官网:https://work.weixin.qq.com/
  2. 点击顶部的**“立即注册”**。
  3. 按照提示填写信息。注意:
    • 企业名称:随便填,比如“我的个人通知中心”或者“XX的测试企业”。
    • 行业类型、人员规模:随便选。
    • 管理员姓名、手机号:填你自己的真实信息,需要接收验证码。
    • 不需要营业执照,个人完全可以注册基础版。

第二步:获取 3 个核心参数(CorpID, AgentId, Secret)

注册成功并登录企业微信后台(网页端)后,我们需要找到写代码必须的 3 个参数。

1. 获取企业 ID (CorpID)

  • 在后台左侧菜单点击 “我的企业”
  • 在“企业信息”页面拉到最下面,找到 企业ID。复制并保存下来。

2. 创建自建应用并获取 AgentIdSecret

  • 在后台左侧菜单点击 “应用管理”
  • 在“自建”那一栏,点击 “创建应用”
  • 上传一个应用 Logo,填写应用名称(比如“服务器报警”),可见范围选择你自己。点击“创建应用”。
  • 创建完成后,点击进入这个应用。你会看到:
    • AgentId(一串数字,比如 1000002),复制保存。
    • Secret(点击“查看”,会要求发送验证码到你的企业微信APP或微信,获取后复制保存)。

3. 获取你的用户 ID (touser)

  • 在后台左侧菜单点击 “通讯录”
  • 找到你自己的名字,点击进去。
  • 找到 “账号”(通常是你的姓名拼音或一串字母数字)。复制保存下来,这就是接收消息的人的 ID。

第三步:在普通微信里接收消息(免下企业微信APP)

为了不下载企业微信 APP,我们需要让普通微信接收这些通知。

  1. 在后台左侧菜单点击 “我的企业” -> “微信插件”
  2. 页面下方会有一个 “邀请关注微信插件” 的二维码。
  3. 用你个人的微信扫一扫这个二维码,点击关注。
  4. 关注后,你的微信列表里会多出一个类似公众号的对话框(名字就是你刚才注册的企业名称)。以后所有的推送都会发到这里!

顺手把 IP 白名单配置好:

  1. 在企业微信后台,点击左侧 “应用管理”
  2. 在“自建”里点击你创建的那个应用。
  3. 在应用详情页往下划,找到 “企业可信IP”

提示:可以通过分号来作为分隔符设置多个IP

配置企业可信IP前,请先 设置可信域名 或 设置接收消息服务器URL

我因为有域名,直接把需要认证的文件放在网站根目录下即可完成认证

第四步:编写 Python 代码发送消息

现在你手头有了 4 个参数:CorpIDSecretAgentIdtouser

新建一个 Python 文件(比如 qywx_push.py),将以下代码复制进去,并替换成你自己的参数

import requests
import json

# ================= 配置区域 =================
CORP_ID = '你的企业ID'         # 替换为你的 CorpID
SECRET = '你的应用Secret'      # 替换为你的 Secret
AGENT_ID = 1000002             # 替换为你的 AgentId (注意这里是数字,不要加引号)
TO_USER = '你的账号ID'         # 替换为你的通讯录账号ID (touser)
# ============================================

def get_access_token(corpid, secret):
    """
    获取企业微信的 Access Token
    """
    url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={secret}"
    response = requests.get(url)
    result = response.json()
    
    if result.get("errcode") == 0:
        return result["access_token"]
    else:
        print("获取 Access Token 失败:", result)
        return None

def send_message(access_token, touser, agentid, content):
    """
    发送文本消息
    """
    url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={access_token}"
    
    # 消息体格式(企业微信官方规定)
    data = {
        "touser": touser,        # 接收人的账号ID,如果填 "@all" 则是发给全员
        "msgtype": "text",       # 消息类型,这里选文本
        "agentid": agentid,      # 应用ID
        "text": {
            "content": content   # 消息内容
        },
        "safe": 0
    }
    
    # 发送 POST 请求
    response = requests.post(url, data=json.dumps(data))
    result = response.json()
    
    if result.get("errcode") == 0:
        print("消息发送成功!请查看微信。")
    else:
        print("消息发送失败:", result)

if __name__ == "__main__":
    print("正在获取 Access Token...")
    token = get_access_token(CORP_ID, SECRET)
    
    if token:
        print("获取成功,正在发送消息...")
        # 你可以在这里修改你想发送的内容,支持换行符 \n
        message_content = "🚨 报警测试\n\n你的企业微信推送通道已成功打通!\n时间:2026年"
        send_message(token, TO_USER, AGENT_ID, message_content)

任何支持发送 HTTP 网络请求的编程语言都可以,PHP 绝对是个非常完美的选​​择

企业微信的推送本质上就是调用它的 API 接口(先 GET 获取 Token,再 POST 发送 JSON 数据)。

把你做好的 PHP 程序挂在服务器上,不仅能完美解决前面提到的**“动态 IP 变化”**问题(因为服务器是固定 IP),还可以方便地通过访问网址来触发推送,或者配合宝塔面板的“计划任务”做定时推送。

下面是一段开箱即用的 PHP 推送代码,你可以直接保存为 wechat_push.php 放到你的服务器上:

<?php
// ================= 配置区域 =================
$corpid = "你的企业ID";          // 替换为你的企业ID
$corpsecret = "你的应用Secret";  // 替换为你的应用Secret
$agentid = 1000001;             // 替换为你的应用ID (AgentId,数字)
$touser = "@all";               // 接收人,"@all"为全员,或者填具体的成员账号

// 消息内容
$message_content = "这是一条来自 PHP 服务器的测试消息!\n当前时间:" . date("Y-m-d H:i:s");
// ============================================

// 1. 获取 Access Token
$token_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={$corpid}&corpsecret={$corpsecret}";
$token_response = file_get_contents($token_url);
$token_data = json_decode($token_response, true);

if (!isset($token_data['access_token'])) {
    die("获取 Token 失败: " . $token_response);
}
$access_token = $token_data['access_token'];

// 2. 组装发送消息的 JSON 数据
$send_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={$access_token}";
$post_data = array(
    "touser" => $touser,
    "msgtype" => "text",
    "agentid" => $agentid,
    "text" => array(
        "content" => $message_content
    ),
    "safe" => 0
);
$json_data = json_encode($post_data, JSON_UNESCAPED_UNICODE);

// 3. 使用 cURL 发送 POST 请求
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($json_data)
));

$result = curl_exec($ch);
curl_close($ch);

// 4. 输出发送结果
echo "发送结果: " . $result;
?>

发表回复