利用PHP调用BizMail OpenApi(腾讯企业邮箱)进行接口开发


以下引自《腾讯企业邮箱OpenApi协议v1.0

腾讯企业邮箱开放协议,包括面向第三方合作应用和面向企业邮用户两类。其中,面向
企业邮用户的开放协议, 将提供给企业邮用户丰富的应用接口, 用户可以根据这些接口定制
自己统一的企业解决方案。
通过协议接口,企业用户可以实现:
1) 单点登录
可以从公司 OA 系统、网站一键进入企业邮箱,免去登录过程。
2) 新邮件提醒
新邮件将即时在 OA 等办公系统提醒你。
3) 数据同步
数据同步可以帮助你同步部门成员信息, 你还可以创建、 删除、 修改帐号, 同步部门信息等。

我一直想用PHP来实现这些功能的调用,把腾讯官方提供的这份简单的文档研究了下,终于弄出来了。做个笔记,如下:
在使用OpenApi接口之前,要先准备好开通腾讯企业邮箱的管理员ID,接口Key(这个可以去企业邮箱管理后台获取)和需要调用信息的邮箱名,然后就可以进行相关调用了,PHP代码如下:

 

// 首先获取AccessToken
 
// 企业邮箱的管理员ID
$cTMailID = 'mymailid';
// 在管理后台获取的接口Key
$cTMailSecret = 'a1234567890b1234567890c123456789';
// 需要调用信息的邮箱名
$cTMailAlias = 'mailalias';
// 获取Token的地址
$cTMailGetAccessTokenURL = 'https://exmail.qq.com/cgi-bin/token';
$cTMailContentData = 'grant_type=client_credentials&client_id=' . $cTMailID . '&client_secret=' . $cTMailSecret;
 
// 获取access_token
// 不要问我为什么这么写,早就忘记了!-_-
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailGetAccessTokenURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
$cTMailAccessToken = $json_obj['access_token'];
 
// 打印获取的AccessToken
echo $cTMailAccessToken . '
';
 
 
 
// 获取auth_key
$cTMailGetAuthKeyURL = 'http://openapi.exmail.qq.com:12211/openapi/mail/authkey';
$cTMailContentData = 'access_token=' . $cTMailAccessToken . '&alias=' . $cTMailAlias;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailGetAuthKeyURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
$cTMailAuthKey = $json_obj['auth_key'];
 
 
// 一键登录
$cURL = 'https://exmail.qq.com/cgi-bin/login?fun=bizopenssologin&method=bizauth&agent=' . $cTMailID . '&user=' . $cTMailAlias . '&ticket=' . $cTMailAuthKey;
echo '一键登录';
 
 
// 获取用户信息
$cTMailPostURL = 'http://openapi.exmail.qq.com:12211/openapi/user/get';
$cTMailContentData = 'access_token=' . $cTMailAccessToken . '&alias=' . $cTMailAlias;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailPostURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 75);
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
print_r($json_obj);
echo '
';
echo 'Email地址:' . $json_obj['Alias'] . '
';
echo '姓名:' . $json_obj['Name'] . '
';
echo '性别:' . $json_obj['Gender'] . '
';
echo '职位:' . $json_obj['Position'] . '
';
echo '电话:' . $json_obj['Tel'] . '
';
echo '手机号码:' . $json_obj['Mobile'] . '
';
echo '员工编号:' . $json_obj['ExtId'] . '
';
 
 
 
// 获取用户未读邮件数量
$cTMailPostURL = 'http://openapi.exmail.qq.com:12211/openapi/mail/newcount';
$cTMailContentData = 'access_token=' . $cTMailAccessToken . '&alias=' . $cTMailAlias;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailPostURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 75);
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
// 打印获取的信息
print_r($json_obj);
 
 
// 客户端维持长连接
$cTMailPostURL = 'http://openapi.exmail.qq.com:12211/openapi/listen';
$cTMailContentData = 'access_token=' . $cTMailAccessToken . '&alias=' . $cTMailAlias;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailPostURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, 75);
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
print_r($json_obj);
 
 
 
// 获取子部门列表
$cTMailPostURL = 'http://openapi.exmail.qq.com:12211/openapi/party/list';
$cTMailContentData = 'access_token=' . $cTMailAccessToken . '&partypath=';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailPostURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
echo '
获取的子部门列表:';
print_r($json_obj);
 
 
 
// 获取部门下成员列表
$cTMailPostURL = 'http://openapi.exmail.qq.com:12211/openapi/partyuser/list';
$cTMailContentData = 'access_token=' . $cTMailAccessToken . '&partypath=XX公司/财务部';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$cTMailPostURL);
curl_setopt($ch,CURLOPT_POSTFIELDS,$cTMailContentData);
curl_setopt($ch,CURLOPT_ENCODING,'UTF-8');
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1 );
$res = curl_exec($ch);
curl_close($ch);
$json_obj = json_decode($res,true);
echo '
获取的子部门成员列表:';
print_r($json_obj);

原文参考:http://www.barhe.org/archives/561
官方手册:http://cdn.markdream.com/ref/mat/%E8%85%BE%E8%AE%AF%E4%BC%81%E4%B8%9A%E9%82%AE%E7%AE%B1OpenApi%E5%8D%8F%E8%AE%AEv1.0.pdf

,

《“利用PHP调用BizMail OpenApi(腾讯企业邮箱)进行接口开发”》 有 5 条评论

  1. Array ( [errcode] => 10001 [error] => ip_freq_block )
    这是什么鬼。
    老是报这个错怎么解决呀

回复 gds 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论审核已启用。您的评论可能需要一段时间后才能被显示。