1、所需信息

  • CorpID:企业ID
  • AgentID:应用ID
  • Secret:应用密钥

2、功能实现

参考内容:企业微信-发送应用消息

 public static class QYWXHelper{//唯一的企业IDstatic string corpid = System.Configuration.ConfigurationManager.AppSettings["corpid"].ToString();//应用密钥static string corpsecret = System.Configuration.ConfigurationManager.AppSettings["secret"].ToString();//消息推送URIstatic string messageSendURI = System.Configuration.ConfigurationManager.AppSettings["messageSendURI"].ToString();/// <summary>/// 获取企业微信的accessToken/// </summary>/// <param name="corpid">企业微信ID</param>/// <param name="corpsecret">管理组密钥</param>/// <returns></returns>public static string GetQYAccessToken(string corpid, string corpsecret){string getAccessTokenUrl = System.Configuration.ConfigurationManager.AppSettings["getAccessTokenUrl"].ToString();string accessToken = "";string respText = "";//获取josn数据string url = string.Format(getAccessTokenUrl, corpid, corpsecret); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (Stream resStream = response.GetResponseStream()){StreamReader reader = new StreamReader(resStream, Encoding.Default);respText = reader.ReadToEnd();resStream.Close();} try{JavaScriptSerializer Jss = new JavaScriptSerializer();Dictionary<string, object> respDic = (Dictionary<string, object>)Jss.DeserializeObject(respText);//通过键access_token获取值accessToken = respDic["access_token"].ToString();}catch (Exception ex){throw ex;} return accessToken;}/// <summary>/// Post数据接口/// </summary>/// <param name="postUrl">接口地址</param>/// <param name="paramData">提交json数据</param>/// <param name="dataEncode">编码方式</param>/// <returns></returns>public static string PostWebRequest(string postUrl, string paramData, Encoding dataEncode){string ret = string.Empty;try{byte[] byteArray = dataEncode.GetBytes(paramData); //转化HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));webReq.Method = "POST";webReq.ContentType = "application/x-www-form-urlencoded";webReq.ContentLength = byteArray.Length;Stream newStream = webReq.GetRequestStream();newStream.Write(byteArray, 0, byteArray.Length);//写入参数newStream.Close();HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);ret = sr.ReadToEnd();sr.Close();response.Close();newStream.Close();}catch (Exception ex){return ex.Message;}return ret;}/// <summary>/// 推送信息/// </summary>/// <param name="corpid">企业微信ID</param>/// <param name="corpsecret">管理组密钥</param>/// <param name="paramData">提交的数据json</param>/// <param name="dataEncode">编码方式</param>/// <returns></returns>public static void SendMessage(string userCode, string message){string accessToken = string.Empty;string postUrl = string.Empty;string param = string.Empty;string postResult = string.Empty;accessToken = GetQYAccessToken(corpid, corpsecret);postUrl = string.Format(messageSendURI, accessToken);WxSendEntity entity = new WxSendEntity(message); foreach (string item in userCode.Split('|')){//paramData.touser = GetOAUserId(item);//在实际应用中需要判断接收消息的成员是否在系统账号中存在。entity.touser = item;param = JsonConvert.SerializeObject(entity);if (entity.touser != null){//{"errcode":0,"errmsg":"ok","invaliduser":""}postResult = PostWebRequest(postUrl, param, Encoding.UTF8); }else{postResult = $"账号{entity.touser}不存在!";}}}}/// <summary>/// 企业微信发送消息的基础消息内容/// </summary>public class WxSendEntity{/// <summary>/// 指定接收消息的成员,成员ID列表(多个接收者用‘|’分隔,最多支持1000个)。 /// 特殊情况:指定为”@all”,则向该企业应用的全部成员发送/// </summary>public string touser { get; set; }/// <summary>/// 指定接收消息的部门,部门ID列表,多个接收者用‘|’分隔,最多支持100个。///当touser为”@all”时忽略本参数/// </summary>public string toparty { get; set; }/// <summary>/// 指定接收消息的标签,标签ID列表,多个接收者用‘|’分隔,最多支持100个。///当touser为”@all”时忽略本参数/// </summary>public string totag { get; set; }/// <summary>/// 消息类型,此时固定为:text/// </summary>public string msgtype { get; set; }/// <summary>/// 企业应用的id,整型/// </summary>public string agentid { get; set; }  /// <summary>/// 表示是否是保密消息,0表示否,1表示是,默认0/// </summary> public string safe { get; set; }/// <summary>/// 发送内容/// </summary>public Text text { get; set; }/// <summary>/// 构造函数/// </summary>/// <param name="message"></param>public WxSendEntity(string message){this.agentid = System.Configuration.ConfigurationManager.AppSettings["corpSendBaseAgentID"].ToString();this.safe = "0";this.msgtype = "text";this.text = new Text(message);}}/// <summary>/// 内容类/// </summary>public class Text{public string content { get; set; }public Text(string message){this.content = message;}}

3、方法调用

         /// <summary>/// 企业微信发送/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_wx_Click(object sender, EventArgs e){string touser = "xxxxxx"; QYWXHelper.SendMessage(touser, "莫愁前路无知己");}

4、结果展示

(二)企业微信消息推送相关推荐

  1. Node-Red 实践:企业微信消息推送

    一个偶然的机会,认识了node-red.这种拖拽控件编写代码的方式给了我很深刻的印象.能够通过简单的拖拽实现mqtt,http,websocket,tcp的服务,作为基于网络的业务流程demon非常方 ...

  2. Spring Boot 实现企业微信消息推送

    1 Maven依赖 <!-- 阿里JSON解析器 --><dependency><groupId>com.alibaba</groupId><ar ...

  3. 企业微信消息推送接口大全

    该类存放接口所用到的企业微信的接口地址 package com.common;public final class QyapiUrl {/*** 请求nginx转发服务器地址*/public stat ...

  4. 企业微信消息推送卡片按钮互动的使用

    企业微信回调推送消息互动模板 前置条件 # 企业微信后台中设置了url 按以上设置 # 回调url: http://www.baidu.com# token: xxxxx# EncodingAESKe ...

  5. 【corpwechat-bot】一个好用的企业微信消息推送python接口库

    文章目录 前言 Requirements Result Features Usage 前言 本文同步发表在blog.gentlecp.com corpwechat-bot是一个python封装的企业机 ...

  6. 【Java开发】Java实现企业微信消息推送,通过应用发送

    企业微信机器人发送消息 一.可能需要的依赖 二.必须的信息 三.效果展示 四.具体代码 一.可能需要的依赖 之前导依赖的时候没有特别标记,现在分不清哪个是哪个了,应该就在这些里面 <depend ...

  7. C# 企业微信消息推送对接,实现天气预报推送

    准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最下面企业id 获取应用secret 和  应用ID 发送微 ...

  8. 微信接收不到企业微信消息推送

    使用微信提供的接口,给公司微信企业号的相关人员推送消息时. 一般是微信端的企业号和企业微信都能接收到推送的消息,但有一次企业微信版本更新后发现微信端的推送消息没有接收到. 原因找了很久,最终发现在企业 ...

  9. 企业微信消息推送(一)接收消息服务器URL

    1.点击左上角头像,打开微信管理平台 2.创建应用 3.获取五个参数 3.1获取应用的AgentId.Secret 3.2获取企业ID 配置接收消息服务器URL 企业微信限制过多,公司域名所有权检验不 ...

最新文章

  1. 用PyTorch实现的李沐《动手学深度学习》,登上GitHub热榜,获得700+星
  2. python语言入门n-python面试题基础
  3. 小微企业好选择 单路塔式服务器推荐
  4. ET框架笔记 (笑览世界写)(转)
  5. ssms只有空白解决方案_SSMS中的解决方案和项目概述
  6. 王思聪也救不了熊猫直播了?
  7. 深入理解VMware虚拟网络
  8. mysql使用命令访问数据库_mysql命令操作数据库
  9. 关于mysql叙述中错误的是什么_以下关于MySQL的叙述中,错误的是( )。_学小易找答案...
  10. Flutter进阶第11篇: 调用原生硬件Api实现扫码 扫描条形码 扫描二维码
  11. SAAS--01HRM系统概述与搭建环境
  12. 怎么在html中加入特效汉字,如何在小视频上加文字,文字动画特效,朋友圈小视频加文字...
  13. 第一回 网管是个苦差事
  14. 如何在图片里藏其他文件
  15. 无状态,无连接的理解
  16. 2011年养成的一个工作习惯
  17. 邓应海:焦点转向美国数据,央行会议!最新黄金走势分析
  18. ClickOnce 通过URL传递参数
  19. xt6使用技巧_凯迪拉克XT6中控按钮图解 XT6车内按键功能说明
  20. Python写UTF8文件,UE、记事本打开依然乱码的问题

热门文章

  1. 底层网络知识详解:从二层到三层-第8讲-世界这么大,我想出网关:欧洲十国游与玄奘西行
  2. 1>cl : 命令行 warning D9035: “Gm”选项已否决,并将在将来的版本中移除1>cl : 命令行 error D8016: “/ZI”和“/Gy-”命令行选项不兼容
  3. 触发浏览器回流的属性方法一览表
  4. 跳槽首选,平均薪资2w+!现在入门快人一步
  5. Flowable流程引擎和各类表说明
  6. spark踩坑记录 (一) group by
  7. 泛微实物档案数字化管理方案,全面优化组织档案管理
  8. win10安装ubuntu-GNOME双系统踩坑综合
  9. MathJax基础教程和快速参考
  10. 使用awk截取IP地址前三段的办法