解决方案 »

  1.   

    用管理员帐号申请一个access_token,然后用这个key保持长连接
      

  2.   

    这个access_token我已经拿到了 就是保持长连接失败,我看你的这个传参传的是access_token和邮箱,我试了也不好使,他们接口说明里面是让传ver吧,可以把你的API说明书给我一份么,三口 [email protected]
      

  3.   

    解决了   确实是参数问题 thank you
      

  4.   

    楼主 您好,最近我也在学腾讯企业邮箱的集成,为什么我在OAuth授权获取access_token 的时候总是报一个错啊?错误是:System.Net.WebException   {"远程服务器返回错误: (400) 错误的请求。"},不知道是哪里的原因,楼主能否给个简单的示例啊,小弟先谢了!!!
      

  5.   

    以下代码实现单点登录,测试通过。但邮件通知未通过,就没贴出。<?php
      $token_data = get_access_token('腾讯企业邮箱管理员账户', '接口key');
      $token_data_arr = json_decode($token_data,true);  $access_token = $token_data_arr['access_token'];
      $token_type = $token_data_arr['token_type'];  $agent = '腾讯企业邮箱管理员账户';
      $user = '将要被操作的企业邮箱里的用户邮箱';
      $ticket = get_auth_key($token_type, $access_token);
      echo "ticket=[".$ticket."]<br><br>";  $href="https://exmail.qq.com/cgi-bin/login?fun=bizopenssologin&method=bizauth&agent=$agent&user=$user&ticket=$ticket";
      echo '<a href="'.$href.'">一键登录邮箱</a><br><br>';
     
      function get_access_token($client_id, $client_secret){
        $postUrl = 'https://tel.exmail.qq.com/cgi-bin/token';
        $postData = 'grant_type=client_credentials&client_id='.$client_id.'&client_secret='.$client_secret;
        return my_curl_post($postUrl, $postData, null);
      }
      
      function get_auth_key($token_type, $access_token){
        $postUrl = 'http://openapi.exmail.qq.com:12211/openapi/mail/authkey';
        $postData = "[email protected]";
        $headerArr[0]="Authorization:$token_type $access_token";
        $retstr = my_curl_post($postUrl, $postData, $headerArr);
        $ps = strpos($retstr, '{');
        $retstr = substr($retstr, $ps);
        $retstr_arr = json_decode($retstr,true);
        $auth_key = $retstr_arr['auth_key'];
        return $auth_key;
      }
      
      function my_curl_post($postURL, $postData, $headerArr){
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 解决返回false问题
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 解决返回false问题
        curl_setopt($ch,CURLOPT_URL, $postURL);
        if ($headerArr){
          curl_setopt($ch, CURLOPT_HTTPHEADER , $headerArr );
          curl_setopt($ch, CURLOPT_HEADER, 1);
        }
        else{
          curl_setopt($ch, CURLOPT_HEADER, 0);             //设置header
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);     //要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_POST, 1);               //post提交方式
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
        $data = curl_exec($ch);                          //运行curl
        curl_close($ch);
        return $data; 
      }
    ?>
      

  6.   

    楼主这个不是新邮件提醒,而是未读邮件提醒。
    楼主的代码也有问题,既然是未读邮件提醒,就不用长连接了。直接使用短连接来获取未读邮件是多少,提示给用户。
    -----------------
    API上最后有个名词解释socket,我想应该是用socket异步获取服务器的数据,不断的刷新socket中是否有新数据接收,就像聊天一样。
    首先是给listen一个Ver,这个东西解释是本地最新维护的版本号,找遍了RTX也没找到这个东西,谁给解释下??
    -------
    还有一个方法可以即时的获取新邮件提醒,就是用socket定时轮询newcount,第一次保存未读邮件数,定时轮询,一旦新邮件到达就给出提示,缺点就是太耗内存了,要不断的去send请求。
    有做出新邮件提醒的在么,解释下官方的Ver是什么东西啊?
      

  7.   

    socket在给listen发送access_token后,返回一个ret:0 的json,紧接着就返回一个Ver:1234567890123.
    然后我就用这个Ver再提交给listen,算是第一次握手,同时还上传了当前的客户端[email protected] ,不断获取socket的消息。
    一直等,不断给邮箱发新邮件测试,服务器也没给我反馈新邮件字段。
    API中解释简直就是简短精悍,搞不懂。openapi/mail/list 这个地址api也没有,带alias参数后,会反馈邮箱前20个字段消息。
    我想问题还是出在了这个Ver的身上,求助一下,官方的Ver到底是什么东西????
      

  8.   

    请问,listen接口如何调用,我这边获取token成功,但是维持长连接失败了,传入参数ver=0,返回无效的请求,请问还需要传入其他的参数吗?