国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Applet WeChat Développement WeChat Développement asp.net WeChat (texte de masse avancé)

Développement asp.net WeChat (texte de masse avancé)

Feb 22, 2017 pm 02:14 PM

Cet article présente principalement le contenu pertinent de la messagerie texte de masse avancée dans le développement asp.net WeChat. Les amis qui en ont besoin peuvent s'y référer

Tout d'abord, expliquons le processus de messagerie texte de masse. Je l'ai développé personnellement. Le programme doit d'abord avoir une interface utilisateur avant de pouvoir commencer à écrire du code. L'interface est la suivante,

Développement asp.net WeChat (texte de masse avancé)

Développement asp.net WeChat (texte de masse avancé)

En regardant. sur la photo, nous pouvons également voir que nous devons d'abord obtenir Ce compte WeChat peut également envoyer quelques messages en groupe ce mois-ci Quant à la fa?on de calculer, si un message est envoyé avec succès dans un groupe, un message sera stocké dans le. base de données locale pour calculer le nombre de messages (je pense que cela peut être fait). Si plus de 4 messages sont envoyés, ils ne peuvent pas être envoyés (je l'ai déjà restreint ici, car le compte de service ne peut envoyer que 4 messages par mois, et il est inutile d'en envoyer plus. L'utilisateur ne peut recevoir que 4 messages, à moins que la fonction de prévisualisation ne soit utilisée pour les envoyer un par un, mais la fonction de prévisualisation ne peut envoyer que 100 fois. Vous pouvez peut-être utiliser le mode développeur pour envoyer des messages de groupe N. fois plus, car après avoir envoyé deux fois le message de groupe, je suis entré dans le backend du site officiel de la plateforme publique WeChat et j'ai vu que je pouvais encore envoyer 4 messages dans un groupe, ce qui était un peu déprimant), la cible du message de groupe ! Vous pouvez choisir d'envoyer tous les utilisateurs ou les utilisateurs du groupe, et pour enregistrer le nombre de messages de groupe, je ne testerai pas les messages texte de groupe ici. Veuillez vous référer au code suivant pour plus de détails?:

Lier le reste. nombre de messages de groupe ce mois-ci

 /// <summary> 
 /// 綁定本月剩余群發(fā)條數(shù)
 /// </summary>
 private void BindMassCount()
 {
 WxMassService wms = new WxMassService();
 List<WxMassInfo> wxmaslist = wms.GetMonthMassCount();
 //官方微信服務(wù)號(hào)每月只能群發(fā)4條信息,(訂閱號(hào)每天1條)多余信息,將不會(huì)成功推送,這里已經(jīng)設(shè)定為4
 this.lbMassCounts.Text = (4 - int.Parse(wxmaslist.Count.ToString())).ToString();

 if (wxmaslist.Count >= 4)
 {
 this.LinkBtnSubSend.Enabled = false;
 this.LinkBtnSubSend.Attributes.Add("Onclick", "return confirm(&#39;群發(fā)信息已達(dá)上限!請(qǐng)下月初再試!&#39;)");
 }
 else
 {
 this.LinkBtnSubSend.Enabled = true;
 this.LinkBtnSubSend.Attributes.Add("Onclick", "return confirm(&#39;您確定要群發(fā)此條信息??&#39;)");
 }
 }

Liste des groupes de liaison

 /// <summary>
 /// 綁定分組列表
 /// </summary>
 private void BindGroupList()
 {
 WeiXinServer wxs = new WeiXinServer();

 ///從緩存讀取accesstoken
 string Access_token = Cache["Access_token"] as string;

 if (Access_token == null)
 {
 //如果為空,重新獲取
 Access_token = wxs.GetAccessToken();

 //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
 }

 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

 string jsonres = "";

 string content = Cache["AllGroups_content"] as string;

 if (content == null)
 {
 jsonres = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=" + Access_tokento;

 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(jsonres);
 myRequest.Method = "GET";
 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 content = reader.ReadToEnd();
 reader.Close();

 //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
 Cache.Insert("AllGroups_content", content, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
 }

 //使用前需要引用Newtonsoft.json.dll文件
 JObject jsonObj = JObject.Parse(content);


 int groupsnum = jsonObj["groups"].Count();

 this.DDLGroupList.Items.Clear();//清除

 for (int i = 0; i < groupsnum; i++)
 {
 this.DDLGroupList.Items.Add(new ListItem(jsonObj["groups"][i]["name"].ToString() + "(" + jsonObj["groups"][i]["count"].ToString() + ")", jsonObj["groups"][i]["id"].ToString()));
 }
 }
 /// <summary>
 /// 選擇群發(fā)對(duì)象類型,顯示隱藏分組列表項(xiàng)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void DDLMassType_SelectedIndexChanged(object sender, EventArgs e)
 {
 if (int.Parse(this.DDLMassType.SelectedValue.ToString()) > 0)
 {
 this.DDLGroupList.Visible = true;
 }
 else
 {
  this.DDLGroupList.Visible = false;
 }
 }

Envoi groupé


 /// <summary>
 /// 群發(fā)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void LinkBtnSubSend_Click(object sender, EventArgs e)
 {
 //根據(jù)單選按鈕判斷類型,發(fā)送
 ///如果選擇的是文本消息
 if (this.RadioBtnList.SelectedValue.ToString().Equals("0"))
 {
 if (String.IsNullOrWhiteSpace(this.txtwenben.InnerText.ToString().Trim()))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;請(qǐng)輸入您要群發(fā)文本內(nèi)容!&#39;);", true);
  return;
 }
 if (this.txtwenben.InnerText.ToString().Trim().Length<10)
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;文本內(nèi)容至少需要10個(gè)字符以上!&#39;);", true);
  return;
 }

 WxMassService wms = new WxMassService();
 List<WxMassInfo> wxmaslist = wms.GetMonthMassCount();

 if (wxmaslist.Count >= 4)
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;本月可群發(fā)消息數(shù)量已達(dá)上限!&#39;);", true);
  return;
 }
 else
 {


  //如何群發(fā)類型為全部用戶,根據(jù)openID列表群發(fā)給全部用戶,訂閱號(hào)不可用,服務(wù)號(hào)認(rèn)證后可用
  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
  StringBuilder sbs = new StringBuilder();
  sbs.Append(GetAllUserOpenIDList());

  WeiXinServer wxs = new WeiXinServer();

  ///從緩存讀取accesstoken
  string Access_token = Cache["Access_token"] as string;

  if (Access_token == null)
  {
  //如果為空,重新獲取
  Access_token = wxs.GetAccessToken();

  //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
  }

  string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


  string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;

  ///群發(fā)POST數(shù)據(jù)示例如下: 
  //  {
  // "touser":[
  // "OPENID1",
  // "OPENID2"
  // ],
  // "msgtype": "text",
  // "text": { "content": "hello from boxer."}
  //}

  string postData = "{\"touser\":[" + sbs.ToString() +
  "],\"msgtype\":\"text\",\"text\":{\"content\":\"" + this.txtwenben.InnerText.ToString() +
  "\"}";


  string tuwenres = wxs.GetPage(posturl, postData);

  //使用前需藥引用Newtonsoft.json.dll文件
  JObject jsonObj = JObject.Parse(tuwenres);

  if (jsonObj["errcode"].ToString().Equals("0"))
  {
   //群發(fā)成功后,保存記錄
  WxMassInfo wmi = new WxMassInfo();

  wmi.ImageUrl = "";
  wmi.type = "文本";
  wmi.contents = this.txtwenben.InnerText.ToString().Trim();
  wmi.title = this.txtwenben.InnerText.ToString().Substring(0, 10) + "...";

  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
  wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();
  }
  else
  {
  wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();
  }

  wmi.massStatus = "成功";//群發(fā)成功之后返回的狀態(tài)碼
  wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息ID


  wmi.massDate = System.DateTime.Now.ToString();

  int num = wms.AddWxMassInfo(wmi);

  if (num > 0)
  {
  Session["wmninfo"] = null;
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)已保存!&#39;);location=&#39;WxMassManage.aspx&#39;;", true);
  return;
  }
  else
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失?。?amp;#39;);", true);
  return;
  }
  }
  else
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)提交失?。?!&#39;);", true);
  return;
  }
  }
  else
  {
  string group_id = this.DDLGroupList.SelectedValue.ToString();


  WeiXinServer wxs = new WeiXinServer();

  ///從緩存讀取accesstoken
  string Access_token = Cache["Access_token"] as string;

  if (Access_token == null)
  {
  //如果為空,重新獲取
  Access_token = wxs.GetAccessToken();

  //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
  }

  string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


  string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;

  ///群發(fā)POST數(shù)據(jù)示例如下: 
  // {
  // "filter":{
  // "is_to_all":false
  // "group_id":"2"
  // },
  // "text":{
  // "content":"CONTENT"
  // },
  // "msgtype":"text"
  //}
  //}

  string postData = "{\"filter\":{\"is_to_all\":\"false\"\"group_id\":\"" + group_id +
  "\"},\"text\":{\"content\":\"" + this.txtwenben.InnerText.ToString() +
  "\"},\"msgtype\":\"text\"}";


  string tuwenres = wxs.GetPage(posturl, postData);

  //使用前需藥引用Newtonsoft.json.dll文件
  JObject jsonObj = JObject.Parse(tuwenres);

  if (jsonObj["errcode"].ToString().Equals("0"))
  {
  //群發(fā)成功后,保存記錄
  WxMassInfo wmi = new WxMassInfo();

  wmi.ImageUrl = "";
  wmi.type = "文本";
  wmi.contents = this.txtwenben.InnerText.ToString().Trim();
  wmi.title = this.txtwenben.InnerText.ToString().Substring(0, 10) + "...";

  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
  wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();
  }
  else
  {
  wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();
  }

  wmi.massStatus = "成功";//群發(fā)成功之后返回的狀態(tài)碼
  wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息ID


  wmi.massDate = System.DateTime.Now.ToString();

  int num = wms.AddWxMassInfo(wmi);

  if (num > 0)
  {
  Session["wmninfo"] = null;
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)已保存!&#39;);location=&#39;WxMassManage.aspx&#39;;", true);
  return;
  }
  else
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失敗!&#39;);", true);
  return;
  }
  }
  else
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)提交失?。?!&#39;);", true);
  return;
  }
  }

 
 }
 }
 //如果選擇的是圖文消息
 if (this.RadioBtnList.SelectedValue.ToString().Equals("1"))
 {
 if (String.IsNullOrWhiteSpace(this.lbtuwenmedai_id.Text.ToString().Trim()))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;請(qǐng)選擇或新建圖文素材再進(jìn)行群發(fā)!&#39;);", true);
  return;
 }

 WxMassService wms = new WxMassService();

 List<WxMassInfo> wxmaslist = wms.GetMonthMassCount();

 if (wxmaslist.Count >= 4)
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;本月可群發(fā)消息數(shù)量已達(dá)上限!&#39;);", true);
  return;
 }
 else
 {
  
  //如何群發(fā)類型為全部用戶,根據(jù)openID列表群發(fā)給全部用戶,訂閱號(hào)不可用,服務(wù)號(hào)認(rèn)證后可用
  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
  StringBuilder sbs = new StringBuilder();
  sbs.Append(GetAllUserOpenIDList());

  WeiXinServer wxs = new WeiXinServer();

  ///從緩存讀取accesstoken
  string Access_token = Cache["Access_token"] as string;

  if (Access_token == null)
  {
  //如果為空,重新獲取
  Access_token = wxs.GetAccessToken();

  //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
  }

  string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


  string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;

  ///群發(fā)POST數(shù)據(jù)示例如下: 
  // {
  // "touser":[
  // "OPENID1",
  // "OPENID2"
  // ],
  // "mpnews":{
  // "media_id":"123dsdajkasd231jhksad"
  // },
  // "msgtype":"mpnews"
  //}

  string postData = "{\"touser\":[" + sbs.ToString() +
  "],\"mpnews\":{\"media_id\":\"" + this.lbtuwenmedai_id.Text.ToString() +
  "\"},\"msgtype\":\"mpnews\"}";


  string tuwenres = wxs.GetPage(posturl, postData);

  //使用前需藥引用Newtonsoft.json.dll文件
  JObject jsonObj = JObject.Parse(tuwenres);

  if (jsonObj["errcode"].ToString().Equals("0"))
  {
  Session["media_id"] = null;
  WxMassInfo wmi = new WxMassInfo();
  if (Session["wmninfo"] != null)
  {
  WxMpNewsInfo wmninfo = Session["wmninfo"] as WxMpNewsInfo;

  wmi.title = wmninfo.title.ToString();
  wmi.contents = wmninfo.contents.ToString();
  wmi.ImageUrl = wmninfo.ImageUrl.ToString();


  wmi.type = "圖文";

  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();
  }
  else
  {
   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();
  }

  wmi.massStatus = "成功";//群發(fā)成功之后返回的狀態(tài)碼
  wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息ID

  wmi.massDate = System.DateTime.Now.ToString();

  int num = wms.AddWxMassInfo(wmi);

  if (num > 0)
  {
   Session["wmninfo"] = null;
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)已保存!&#39;);location=&#39;WxMassManage.aspx&#39;;", true);
   return;
  }
  else
  {
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失敗!&#39;);", true);
   return;
  }
  }
  else
  {
  wmi.title = "";
  wmi.contents = "";
  wmi.ImageUrl = "";
  wmi.type = "圖文";

  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();
  }
  else
  {
   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();
  }

  wmi.massStatus = "成功";//群發(fā)成功之后返回的狀態(tài)碼
  wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息ID

  wmi.massDate = System.DateTime.Now.ToString();

  int num = wms.AddWxMassInfo(wmi);

  if (num > 0)
  {
   Session["wmninfo"] = null;
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!圖文部分?jǐn)?shù)據(jù)已保存!&#39;);location=&#39;WxMassManage.aspx&#39;;", true);
   return;
  }
  else
  {
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功!??!數(shù)據(jù)保存失?。?amp;#39;);", true);
   return;
  }
  }
  }
  else
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)提交失?。。?amp;#39;);", true);
  return;
  }


  }
  else
  {
  //根據(jù)分組進(jìn)行群發(fā),訂閱號(hào)和服務(wù)號(hào)認(rèn)證后均可用

  string group_id = this.DDLGroupList.SelectedValue.ToString();


  WeiXinServer wxs = new WeiXinServer();

  ///從緩存讀取accesstoken
  string Access_token = Cache["Access_token"] as string;

  if (Access_token == null)
  {
  //如果為空,重新獲取
  Access_token = wxs.GetAccessToken();

  //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
  }

  string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


  string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=" + Access_tokento;

  ///群發(fā)POST數(shù)據(jù)示例如下: 
  // {
  // "filter":{
  // "is_to_all":false
  // "group_id":"2"
  // },
  // "mpnews":{
  // "media_id":"123dsdajkasd231jhksad"
  // },
  // "msgtype":"mpnews"
  //}

  string postData = "{\"filter\":{\"is_to_all\":\"false\"\"group_id\":\""+group_id+
  "\"},\"mpnews\":{\"media_id\":\"" + this.lbtuwenmedai_id.Text.ToString() +
  "\"},\"msgtype\":\"mpnews\"}";


  string tuwenres = wxs.GetPage(posturl, postData);

  //使用前需藥引用Newtonsoft.json.dll文件
  JObject jsonObj = JObject.Parse(tuwenres);

  if (jsonObj["errcode"].ToString().Equals("0"))
  {
  Session["media_id"] = null;
  WxMassInfo wmi = new WxMassInfo();
  if (Session["wmninfo"] != null)
  {
  WxMpNewsInfo wmninfo = Session["wmninfo"] as WxMpNewsInfo;

  wmi.title = wmninfo.title.ToString();
  wmi.contents = wmninfo.contents.ToString();
  wmi.ImageUrl = wmninfo.ImageUrl.ToString();


  wmi.type = "圖文";

  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();
  }
  else
  {
   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();
  }

  wmi.massStatus = "成功";//群發(fā)成功之后返回的狀態(tài)碼
  wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息ID

  wmi.massDate = System.DateTime.Now.ToString();

  int num = wms.AddWxMassInfo(wmi);

  if (num > 0)
  {
   Session["wmninfo"] = null;
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。。?shù)據(jù)已保存!&#39;);location=&#39;WxMassManage.aspx&#39;;", true);
   return;
  }
  else
  {
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功!?。?shù)據(jù)保存失??!&#39;);", true);
   return;
  }
  }
  else
  {
  wmi.title = "";
  wmi.contents = "";
  wmi.ImageUrl = "";
  wmi.type = "圖文";

  if (this.DDLMassType.SelectedValue.ToString().Equals("0"))
  {
   wmi.massObject = this.DDLMassType.SelectedItem.Text.ToString();
  }
  else
  {
   wmi.massObject = this.DDLGroupList.SelectedItem.Text.ToString();
  }

  wmi.massStatus = "成功";//群發(fā)成功之后返回的狀態(tài)碼
  wmi.massMessageID = jsonObj["msg_id"].ToString();//群發(fā)成功之后返回的消息ID

  wmi.massDate = System.DateTime.Now.ToString();

  int num = wms.AddWxMassInfo(wmi);

  if (num > 0)
  {
   Session["wmninfo"] = null;
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功!??!圖文部分?jǐn)?shù)據(jù)已保存!&#39;);location=&#39;WxMassManage.aspx&#39;;", true);
   return;
  }
  else
  {
   ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)已提交成功?。?!數(shù)據(jù)保存失敗!&#39;);", true);
   return;
  }
  }
  }
  else
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;群發(fā)任務(wù)提交失?。。?amp;#39;);", true);
  return;
  }
  }
 }
 }
 }

Aper?u avant l'envoi

/// <summary>
 /// 發(fā)送前預(yù)覽
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void LinkBtnSendPreview_Click(object sender, EventArgs e)
 {
 WeiXinServer wxs = new WeiXinServer();

 ///從緩存讀取accesstoken
 string Access_token = Cache["Access_token"] as string;

 if (Access_token == null)
 {
 //如果為空,重新獲取
 Access_token = wxs.GetAccessToken();

 //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
 }

 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


 string posturl = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=" + Access_tokento;

 ///如果選擇的是文本消息
 if (this.RadioBtnList.SelectedValue.ToString().Equals("0"))
 {
 if (String.IsNullOrWhiteSpace(this.txtwenben.InnerText.ToString().Trim()))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;請(qǐng)輸入您要發(fā)送預(yù)覽的文本內(nèi)容!&#39;);", true);
  return;
 }
 if (this.txttoUserName.Value.ToString().Trim().Equals("請(qǐng)輸入用戶微信號(hào)"))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;請(qǐng)輸入接收消息的用戶微信號(hào)!&#39;);", true);
  return;
 }
 //文本消息的json數(shù)據(jù){
 // "touser":"OPENID", 可改為對(duì)微信號(hào)預(yù)覽,例如towxname:zhangsan
 // "text":{ 
 // "content":"CONTENT" 
 // }, 
 // "msgtype":"text"
 //}
 string postData = "{\"towxname\":\"" + this.txttoUserName.Value.ToString() +
   "\",\"text\":{\"content\":\"" + this.txtwenben.InnerText.ToString() +
   "\"},\"msgtype\":\"text\"}";

 string tuwenres = wxs.GetPage(posturl, postData);

 //使用前需藥引用Newtonsoft.json.dll文件
 JObject jsonObj = JObject.Parse(tuwenres);

 if (jsonObj["errcode"].ToString().Equals("0"))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;發(fā)送預(yù)覽成功!!&#39;);", true);
  return;
 }
 else
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;發(fā)送預(yù)覽失?。?!&#39;);", true);
  return;
 }
 }
 //如果選擇的是圖文消息
 if (this.RadioBtnList.SelectedValue.ToString().Equals("1"))
 {
 if(String.IsNullOrWhiteSpace(this.lbtuwenmedai_id.Text.ToString().Trim()))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;請(qǐng)選擇要預(yù)覽的圖文素材!&#39;);", true);
  return;
 }
 if (this.txttoUserName.Value.ToString().Trim().Equals("請(qǐng)輸入用戶微信號(hào)"))
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;請(qǐng)輸入接收消息的用戶微信號(hào)!&#39;);", true);
  return;
 }
 //圖文消息的json數(shù)據(jù){
 // "touser":"OPENID", 可改為對(duì)微信號(hào)預(yù)覽,例如towxname:zhangsan
  // "mpnews":{ 
  // "media_id":"123dsdajkasd231jhksad" 
  // },
  // "msgtype":"mpnews" 
  //}
 string postData = "{\"towxname\":\"" + this.txttoUserName.Value.ToString() +
  "\",\"mpnews\":{\"media_id\":\"" + this.lbtuwenmedai_id.Text.ToString() +
  "\"},\"msgtype\":\"mpnews\"}";
 
 string tuwenres = wxs.GetPage(posturl, postData);

 //使用前需藥引用Newtonsoft.json.dll文件
 JObject jsonObj = JObject.Parse(tuwenres);

 if (jsonObj["errcode"].ToString().Equals("0"))
 {
  Session["media_id"] = null;
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;發(fā)送預(yù)覽成功??!&#39;);", true);
  return;
 }
 else
 {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;發(fā)送預(yù)覽失?。。?amp;#39;);", true);
  return;
 }


 }
 
 }

L'élément clé est d'obtenir les openID de tous les utilisateurs et de les concaténer dans un string?:

 /// <summary>
 /// 獲取所有微信用戶的OpenID
 /// </summary>
 /// <returns></returns>
 protected string GetAllUserOpenIDList()
 {
 StringBuilder sb = new StringBuilder();

 WeiXinServer wxs = new WeiXinServer();

 ///從緩存讀取accesstoken
 string Access_token = Cache["Access_token"] as string;

 if (Access_token == null)
 {
 //如果為空,重新獲取
 Access_token = wxs.GetAccessToken();

 //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
 Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
 }

 string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);

 string jsonres = "";

 string content = Cache["AllUserOpenList_content"] as string;

 if (content == null)
 {
 jsonres = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + Access_tokento;

 HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(jsonres);
 myRequest.Method = "GET";
 HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
 StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
 content = reader.ReadToEnd();
 reader.Close();

 //設(shè)置緩存的數(shù)據(jù)7000秒后過(guò)期
 Cache.Insert("AllUserOpenList_content", content, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
 }

 //使用前需要引用Newtonsoft.json.dll文件
 JObject jsonObj = JObject.Parse(content);


 if (jsonObj.ToString().Contains("count"))
 {
 int totalnum = int.Parse(jsonObj["count"].ToString());



 for (int i = 0; i < totalnum; i++)
 {
  sb.Append(&#39;"&#39;);
  sb.Append(jsonObj["data"]["openid"][i].ToString());
  sb.Append(&#39;"&#39;);
  sb.Append(",");
 }
 }

 return sb.Remove(sb.ToString().LastIndexOf(","),1).ToString();
 }

C'est la fin. Le chapitre suivant continuera à expliquer l'envoi groupé d'informations graphiques. Car avant l'envoi massif d'informations graphiques, vous devez télécharger les documents. requis pour les informations graphiques et obtenez le media_id, donc ce chapitre ne le présentera pas. Le chapitre suivant le présentera. Créez une nouvelle image et un nouveau message texte et envoyez-le à un groupe.

Pour plus d'articles sur le développement asp.net WeChat (texte de groupe avancé), veuillez faire attention au site Web PHP chinois?!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276