c#如何发送企业微信消息_c#发送企业微信消息的6种方式

夜伟大大_3858

夜伟大大_3858

2026-04-05

1020人浏览

原创

企业微信发消息必须先获取并缓存access_token,有效期2小时;发送时需URL编码凭证、设正确Content-Type、JSON必填字段齐全、链接强制HTTPS;机器人需按规范签名且限频。

c#如何发送企业微信消息_c#发送企业微信消息的6种方式

企业微信发送消息必须先拿到 access_token

不拿 access_token,所有发消息请求都会返回 {"errcode":40014,"errmsg":"invalid access_token"}。这不是权限问题,是认证凭据缺失的硬性拦截。

  • access_token 有效期 2 小时,必须缓存并自动刷新,不能每次发消息都重新请求
  • 推荐用静态变量 + 定时器或懒加载+双重检查锁(Lazy 配合 Interlocked)管理,避免并发重复获取
  • 调用 https://qyapi.weixin.qq.com/cgi-bin/gettoken 时,corpid 和 corpsecret 必须 URL 编码(尤其 corpsecret 含斜杠或加号时)

用 HttpClient 发 POST 请求发文本消息最稳

别用 WebClient 或封装过重的 SDK,企业微信对 HTTP 状态码和 JSON 格式敏感,越简单越可控。

  • 必须设 Content-Type: application/json; charset=utf-8,漏掉 charset=utf-8 可能导致中文乱码(返回 errcode=0 但消息体为空)
  • 消息体 JSON 中 toparty、touser、totag 三者至少填一个,全空会报 errcode=40005
  • 发送给部门时,toparty 值是数字 ID 字符串(如 "123"),不是名称;ID 需从管理后台「通讯录」里手动查,API 不提供名称转 ID 接口
  • 示例片段:
    var json = new { touser = "ZhangSan", msgtype = "text", text = new { content = "你好" } };

发送图文/卡片消息要注意字段嵌套和权限

企业微信的 news 和 interactive 消息类型,字段层级深、校验严,错一层就 errcode=40006(无效参数)。

C#
C#

"避开 C# 常见错误——空陷阱、异步陷阱、LINQ 陷阱及资源泄漏。"

下载
  • news 类型中,articles 是数组,每个元素必须含 title、description、url、picurl 四个字段,缺一不可(picurl 可为空字符串,但不能省略)
  • interactive 卡片消息需提前在管理后台「应用管理 → 自建应用 → 选择应用 → 设置 → 交互消息」开启权限,否则返回 errcode=40019
  • 所有链接字段(url、picurl、btntxt 对应的链接)必须是 HTTPS,HTTP 会静默失败

企业微信机器人 Webhook 要单独处理签名和限频

机器人不是走 access_token 流程,而是用 Webhook URL + 可选签名,但签名逻辑容易写错。

  • 启用签名时,必须按文档拼接 timestamp + "\n" + secret 再算 SHA256,换行符是 \n(不是 \r\n),且末尾不能多空格
  • 签名后要 hex 编码成小写字符串,拼到 URL 后作为 sign 参数,例如:https://qyapi.weixin.qq.com/...?key=xxx&sign=abcd1234...
  • 机器人每分钟最多 20 条,超限返回 429 Too Many Requests,需在代码里做滑动窗口计数,不能只靠重试
  • 机器人不支持 touser/toparty,消息默认发到配置的群,也无法指定接收人

企业微信消息接口看着简单,但 access_token 生命周期、字段必填性、HTTPS 强制要求、签名换行细节这些地方,错一个就卡住半天。实际跑通第一条消息后,建议立刻把 token 获取、JSON 构造、HTTP 发送这三块抽成独立方法,后面加新类型只是改 body。

相关文章

企业微信
企业微信

企业微信是腾讯微信团队为企业打造的专业办公管理工具。与微信一致的沟通体验,丰富免费的OA应用,并与微信消息、小程序、微信支付等互通,助力企业高效办公和管理。有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

c#

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2863

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

6243

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

7170

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6998

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

1003

5

c#是什么意思
c#是什么意思

C#是一种通用的面向对象编程语言,它在.NET框架上运行,可用于开发各种类型的应用程序。本专题为大家提供c#相关的各种文章、以及下载和课程。

2023.08.08

1132

5

什么是c#
什么是c#

C#(读作C Sharp)是一种现代的、通用的、面向对象的编程语言。它由微软公司开发,于2000年首次发布,主要用于开发Windows桌面应用程序、Web应用程序、移动应用程序以及游戏开发等领域。C#是一种类型安全和托管的编程语言,它结合了C++的强大性能和C语言的简单易学特点,并引入了许多新的特性和概念,如委托、属性、泛型和异步编程等,以提高开发效率和代码可维护性。

2023.08.31

3331

3

C#中base关键字的用法
C#中base关键字的用法

在C#中,base关键字用于访问当前类的基类成员,这包括基类的字段、属性、方法、构造函数、索引器以及事件。想了解更多C#的相关内容,可以阅读本专题下面的文章。

2024.03.13

945

8

C#Task用法
C#Task用法

Task在C#中是用于表示异步操作的对象,它位于System.Threading.Tasks命名空间中。想了解更多C#中各种用法的相关内容,可以阅读本专题下面的文章。

2024.03.14

2655

11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C++ Core Guidelines
C++ Core Guidelines

共0课时 | 0人学习

C++ Reference
C++ Reference

共0课时 | 0人学习

C++ 官方标准说明
C++ 官方标准说明

共0课时 | 0人学习