zoukankan      html  css  js  c++  java
  • 利用腾讯企业邮箱开放API获取账户未读邮件数初探

        公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API

    你可以通过开放接口实现以下功能:

    • 数据同步

      数据同步可以帮助你同步部门成员信息,你还可以创建、删除、修改帐号信息。

    • 来信提醒

      新邮件将即时在OA等办公系统提醒你。

    • 单点登录

      你可以从公司OA系统、网站一键进入企业邮箱,免去登录过程。

        具体的功能可以自己登陆腾讯企业邮箱管理员界面,进入“工具箱--开放协议”中下载开放协议文档查看,有了这些API就能做不少事情了,可以尝试和公司内部的一些系统进行整合,相信会有意想不到的惊喜。

        简单测试了一下未读邮件数这个能力,代码很简单,就不做说明了,由于API返回的数据是JSON格式,用到了LitJSON

      1         /// <summary>
      2         /// POST时用到的几个数据
      3         /// </summary>
      4         public struct PostData
      5         {
      6             /// <summary>
      7             /// 目标服务器地址
      8             /// </summary>
      9             public string url;
     10             /// <summary>
     11             /// 采用的编码
     12             /// </summary>
     13             public string encoding;
     14             /// <summary>
     15             /// POST的数据
     16             /// </summary>
     17             public string contentData;
     18             /// <summary>
     19             /// contentType
     20             /// </summary>
     21             public string contentType;
     22             /// <summary>
     23             /// 添加其他的Header
     24             /// </summary>
     25             public string header;
     26         }
     27 
     28         /// <summary>
     29         /// 申请腾讯企业邮箱时的管理员账户
     30         /// </summary>
     31         string client_id = "hhhhhhhhhhh.com";
     32         /// <summary>
     33         /// 腾讯企业邮箱分配的接口key
     34         /// </summary>
     35         string client_secret = "3ed4b10okd37f2e0f56f23a3b6e53013";
     36         /// <summary>
     37         /// 目标邮箱的账户,获取对应的未读邮件数
     38         /// </summary>
     39         string alias = "chen123@hhhhhhhhhhh.com";
     40 
     41         /// <summary>
     42         /// 按钮事件,调用腾讯API获取Token,然后获取未读邮件数
     43         /// </summary>
     44         /// <param name="sender"></param>
     45         /// <param name="e"></param>
     46         private void bNewMailCount_Click(object sender, EventArgs e)
     47         {
     48             //第一步获取Token
     49             PostData pdata = new PostData();
     50             pdata.url = "https://tel.exmail.qq.com/cgi-bin/token";
     51             pdata.contentData = "grant_type=client_credentials&client_id=" + client_id + "&client_secret=" + client_secret;
     52             pdata.encoding = "UTF-8";
     53             pdata.contentType = "application/x-www-form-urlencoded";
     54 
     55             string responseString = "";
     56             //获取token_type和access_token
     57             LitJson.JsonData json = this.Post(pdata, out responseString);
     58 
     59             if (json != null)
     60             {
     61                 //获取Token成功后,第二步,获取未读邮件数
     62                 pdata = new PostData();
     63                 pdata.url = "http://openapi.exmail.qq.com:12211/openapi/mail/newcount";
     64                 pdata.contentData = "alias=" + alias;
     65                 pdata.encoding = "UTF-8";
     66                 pdata.contentType = "application/x-www-form-urlencoded";
     67                 pdata.header = "Authorization: " + json["token_type"] + " " + json["access_token"];
     68 
     69                 responseString = "";
     70                 json = this.Post(pdata, out responseString);
     71 
     72                 if (json != null)
     73                 {
     74                     responseString = "账户:" + json["Alias"] + " 未读邮件:" + json["NewCount"];
     75                     iHandler.TextBoxAppend(this.tResponse, responseString, true);
     76                 }
     77             }
     78         }
     79         /// <summary>
     80         /// POST,返回LitJson.JsonData对象
     81         /// </summary>
     82         /// <param name="pdata"></param>
     83         /// <param name="responseString"></param>
     84         /// <returns></returns>
     85         private LitJson.JsonData Post(PostData pdata, out string responseString)
     86         {
     87             responseString = String.Empty;
     88             try
     89             {
     90                 Encoding encoding = Encoding.GetEncoding(pdata.encoding);
     91                 byte[] data = encoding.GetBytes(pdata.contentData);
     92                 HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(pdata.url);
     93                 webReq.Method = "POST";
     94                 webReq.ContentLength = data.Length;
     95                 webReq.ContentType = pdata.contentType + "; charset=" + pdata.encoding;
     96                 if (!String.IsNullOrEmpty(pdata.header))
     97                 {
     98                     webReq.Headers.Add(pdata.header);
     99                 }
    100                 Stream webStream = webReq.GetRequestStream();
    101                 webStream.Write(data, 0, data.Length);
    102 
    103                 WebResponse webResp = webReq.GetResponse();
    104                 Stream webRespStream = webResp.GetResponseStream();
    105                 StreamReader reader = new StreamReader(webRespStream, encoding);
    106                 string respXml = reader.ReadToEnd();
    107                 reader.Close(); reader.Dispose();
    108                 webResp.Close();
    109 
    110                 responseString = respXml;
    111                 return LitJson.JsonMapper.ToObject(respXml); ;
    112             }
    113             catch (Exception ex)
    114             {
    115                 responseString = ex.ToString();
    116                 return null;
    117             }
    118         }
  • 相关阅读:
    Spark学习之路 九、SparkCore的调优之数据倾斜调优
    Spark学习之路 八、SparkCore的调优之开发调优
    Spark Core、Spark Sql、Spark Streaming 联系与区别
    Spark学习之路 七、Spark 运行流程
    Spark学习之路 六、Spark Transformation和Action
    Spark学习之路 五、Spark伪分布式安装
    一起来学习Shell脚本
    简单整理React的Context API
    阅读别人项目源码时的随手记(乱七八糟待归类整理)
    React.Component 与 React.PureComponent(React之性能优化)
  • 原文地址:https://www.cnblogs.com/hope250/p/3669433.html
Copyright © 2011-2022 走看看