C#微信消息推送

string weichatid = dtposh.Rows[0]["userwechatid"].ToString();
                            string posturl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + access_token;

                            string pama = "{" + '"' + "touser" + '"' + ":" + '"' + weichatid + '"' + ',' + '"' + "template_id" + '"' + ':' + '"' + "mr5YZpwp8f2h0-7IFhckjaYcTLAEz-JDBkBDCJtyN9k" + '"' + ',' + '"' + "url" + '"' + ':' + '"' + "http://www.xxxxx.com:64932/Login.aspx" + '"' + ',' + '"' + "data" + '"' + ':' + '{' + '"' + "first" + '"' + ':' + '{' + '"' + "value" + '"' + ':' + '"' + name + "-" + "售后配件单审核" + '"' + ',' + '"' + "color" + '"' + ':' + '"' + "#173177" + '"' + '}' + ',' + '"' + "keyword1" + '"' + ':' + '{' + '"' + "value" + '"' + ':' + '"' + "备注" + DPgss.SelectedItem.Text + DPpj.SelectedValue + '"' + ',' + '"' + "color" + '"' + ':' + '"' + "#173177" + '"' + '}' + ',' + '"' + "keyword2" + '"' + ':' + '{' + '"' + "value" + '"' + ':' + '"' + "办理进度" + '"' + ',' + '"' + "color" + '"' + ':' + '"' + "#173177" + '"' + '}' + ',' + '"' + "keyword3" + '"' + ':' + '{' + '"' + "value" + '"' + ':' + '"' + DateTime.Now.ToString() + '"' + ',' + '"' + "color" + '"' + ':' + '"' + "#173177" + '"' + '}' + ',' + '"' + "remark" + '"' + ':' + '{' + '"' + "value" + '"' + ':' + '"' + "请及时处理!" + '"' + ',' + '"' + "color" + '"' + ':' + '"' + "#173177" + '"' + '}' + '}' + '}';

                            string resust = GetNewToken.PostWebRequest(posturl, pama, Encoding.UTF8);

token超时重新获取token 

TimeSpan ts = DateTime.Now - time;
                        if (ts.TotalSeconds > 7200)
                        {
                            access_token = GetNewToken.gettoken(appid, secret);
                        }
 public static string gettoken(string appid, string secret)
        {
            String toke = GetWebRequest(appid, secret);
            JObject obj = Newtonsoft.Json.Linq.JObject.Parse(toke);
            JToken newtoke = obj;
            string token = newtoke["access_token"].ToString();
            DateTime dtime = DateTime.Now;

            Historydata hs = new Historydata();
            hs.updatetoken(token,dtime);
            return token;
        }

weichatid 为微信用户ID

template_id为模板消息ID

url为点击该消息将要跳转到的目标链接地址

比较好理解,有疑问随时评论

### C# 实现企业微信消息推送 API 示例 为了通过C#实现向企业微信发送消息的功能,程序通常分为几个部分来处理:首先是引入必要的库文件以便能够发起HTTP请求并解析JSON响应。接着定义用于获取访问令牌的方法,因为每次调用API接口都需要有效的`access_token`作为参数传递给服务器验证身份合法性。最后编写实际执行消息发送逻辑的部分。 #### 获取Access Token 考虑到`access_token`的有效期为7200秒,在此期间无需重复申请新的令牌。因此可以在首次成功获得之后将其存储起来,并设置一个时间戳记录当前时刻。每当准备再次发送消息前先判断距离上次更新是否超过了两小时,如果确实过期则重新请求刷新后的凭证[^4]。 ```csharp private static string _accessToken; private static DateTime _lastRefreshTime; public static void RefreshAccessTokenIfNeeded() { TimeSpan elapsed = DateTime.Now - _lastRefreshTime; if (elapsed.TotalSeconds > 7200 || string.IsNullOrEmpty(_accessToken)) { var result = GetWebRequest("your_appid", "your_secret"); JObject jsonResult = JObject.Parse(result); _accessToken = jsonResult["access_token"]?.ToString(); _lastRefreshTime = DateTime.Now; } } ``` #### 构造并发送消息 一旦拥有了合法的`access_token`,就可以构建要发送的消息体结构并向指定的企业微信Webhook URL发出POST请求。下面是一个简单的例子展示了如何利用HttpClient类来进行这一操作: ```csharp using System.Net.Http; using Newtonsoft.Json.Linq; public async Task SendMessageAsync(string messageContent) { using HttpClient client = new HttpClient(); // Ensure we have a valid access token before sending the request. RefreshAccessTokenIfNeeded(); HttpResponseMessage response = await client.PostAsync( $"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={_accessToken}", new StringContent(JsonConvert.SerializeObject(new { touser = "@all", msgtype = "text", text = new { content = messageContent }, agentid = "your_agent_id" }), Encoding.UTF8, "application/json")); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine($"Response from WeChat Work: {responseBody}"); } ``` 上述代码片段实现了基本的文字形式的通知服务[^1]。对于更复杂的需求比如发送多媒体内容或是自定义样式链接,则需参照官方文档调整相应字段配置[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值