第一步:注册企业微信(个人免费注册)
- 在电脑浏览器打开企业微信官网:https://work.weixin.qq.com/
- 点击顶部的**“立即注册”**。
- 按照提示填写信息。注意:
- 企业名称:随便填,比如“我的个人通知中心”或者“XX的测试企业”。
- 行业类型、人员规模:随便选。
- 管理员姓名、手机号:填你自己的真实信息,需要接收验证码。
- 不需要营业执照,个人完全可以注册基础版。
第二步:获取 3 个核心参数(CorpID, AgentId, Secret)
注册成功并登录企业微信后台(网页端)后,我们需要找到写代码必须的 3 个参数。
1. 获取企业 ID (CorpID)
- 在后台左侧菜单点击 “我的企业”。
- 在“企业信息”页面拉到最下面,找到 企业ID。复制并保存下来。
2. 创建自建应用并获取 AgentId 和 Secret
- 在后台左侧菜单点击 “应用管理”。
- 在“自建”那一栏,点击 “创建应用”。
- 上传一个应用 Logo,填写应用名称(比如“服务器报警”),可见范围选择你自己。点击“创建应用”。
- 创建完成后,点击进入这个应用。你会看到:
AgentId(一串数字,比如 1000002),复制保存。Secret(点击“查看”,会要求发送验证码到你的企业微信APP或微信,获取后复制保存)。
3. 获取你的用户 ID (touser)
- 在后台左侧菜单点击 “通讯录”。
- 找到你自己的名字,点击进去。
- 找到 “账号”(通常是你的姓名拼音或一串字母数字)。复制保存下来,这就是接收消息的人的 ID。
第三步:在普通微信里接收消息(免下企业微信APP)
为了不下载企业微信 APP,我们需要让普通微信接收这些通知。
- 在后台左侧菜单点击 “我的企业” -> “微信插件”。
- 页面下方会有一个 “邀请关注微信插件” 的二维码。
- 用你个人的微信扫一扫这个二维码,点击关注。
- 关注后,你的微信列表里会多出一个类似公众号的对话框(名字就是你刚才注册的企业名称)。以后所有的推送都会发到这里!
顺手把 IP 白名单配置好:
- 在企业微信后台,点击左侧 “应用管理”。
- 在“自建”里点击你创建的那个应用。
- 在应用详情页往下划,找到 “企业可信IP”。
提示:可以通过分号来作为分隔符设置多个IP
配置企业可信IP前,请先 设置可信域名 或 设置接收消息服务器URL
我因为有域名,直接把需要认证的文件放在网站根目录下即可完成认证
第四步:编写 Python 代码发送消息
现在你手头有了 4 个参数:CorpID、Secret、AgentId、touser。
新建一个 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;
?>