客服热线:

腾讯企业邮箱集成的坑

2019-11-03 08:24:07浏览:148评论:0 来源:配电箱   
核心摘要:腾讯企业邮箱官方api文档很简略还有一些错误和漏洞:1. 获取token单点登录和获取未读邮件数使用的secret不一致。此处很容易误解

腾讯企业邮箱官方api文档很简略还有一些错误和漏洞:

1. 获取token单点登录和获取未读邮件数使用的secret不一致。

此处很容易误解为最初用于获取AccessToken的corpSecret

2.获取未读邮件数这个功能可以被管理员停用,需要开启

停用的时候返回返回?

3.获取未读邮件数的请求为post请求,官方文档是get


4.如果部署的weblogic之类的中间件可以会出现以下问题,请求的https报错证书不一致

此处的问题主要是后台发起请求的时候weblogic会去做安全校验,

解决办法:1.修改weblogic配置

? ? ? ? ? ? ? ? ? 2.?HttpsURLConnection 配合Handler绕开证书校验

? ? ? ? ? ? ? ? ? 3.请求之前信任所有证书

信任证书的方法:

private static void trustALLSSLCertificates(HttpURLConnection con) throws NoSuchAlgorithmException, KeyManagementException {

? ? ? ? ((HttpsURLConnection) con).setHostnameVerifier(new HostnameVerifier() {? ?

? ? ? ? ? ? public boolean verify(String hostname, SSLSession session) {? ?

? ? ? ? ? ? ? ? return true;? ?

? ? ? ? ? ? }?

? ? ? ? });? ?

? ? ? ? // Ignore Certification? ?

? ? ? ? TrustManager ignoreCertificationTrustManger=new X509TrustManager() {? ?


? ? ? ? ? ? public void checkClientTrusted(X509Certificate certificates[], String authType) throws CertificateException {? ?


? ? ? ? ? ? }? ?


? ? ? ? ? ? public void checkServerTrusted(X509Certificate[] ax509certificate, String s) throws CertificateException {? ?


? ? ? ? ? ? }? ?


? ? ? ? ? ? public X509Certificate[] getAcceptedIssuers() {? ?

? ? ? ? ? ? ? ? return null;? ?

? ? ? ? ? ? }?

? ? ? ? };? ?

? ? ? ? // Prepare SSL Context? ?

? ? ? ? TrustManager[] tm={ ignoreCertificationTrustManger };? ?

? ? ? ? SSLContext sslContext=SSLContext.getInstance("SSL");? ?

? ? ? ? sslContext.init(null, tm, new java.security.SecureRandom());? ?


? ? ? ? // 从上述SSLContext对象中得到SSLSocketFactory对象? ?

? ? ? ? SSLSocketFactory ssf=sslContext.getSocketFactory();? ?

? ? ? ? ((HttpsURLConnection) con).setSSLSocketFactory(ssf);? ?

? ? }?

后端请求:

public String httpGetbak(String url) {

? ? ? ? BufferedReader in=null;?

? ? ? ? try {?

? ? ? ? //com.sun.net.ssl.internal.www.protocol.https.Handler

? ? ? ? ? ? URL realUrl=new URL(null,url,new sun.net.www.protocol.https.Handler());?


? ? ? ? ? ? HttpsURLConnection? connection=(HttpsURLConnection) realUrl.openConnection();?

? ? ? ? ? ? trustALLSSLCertificates(connection);

? ? ? ? ? ? connection.setRequestProperty("accept", "*/*");?

? ? ? ? ? ? connection.setRequestProperty("connection", "Keep-Alive");?

? ? ? ? ? ? connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");?

? ? ? ? ? ? connection.setConnectTimeout(5000);?

? ? ? ? ? ? connection.setReadTimeout(5000);?


? ? ? ? ? ? connection.connect();?


? ? ? ? ? ? in=new BufferedReader(new InputStreamReader(connection.getInputStream()));?

? ? ? ? ? ? StringBuffer sb=new StringBuffer();?

? ? ? ? ? ? String line;?

? ? ? ? ? ? while ((line=in.readLine()) !=null) {?

? ? ? ? ? ? ? ? sb.append(line);?

? ? ? ? ? ? }?

? ? ? ? ? ? return sb.toString();?

? ? ? ? } catch (Exception e) {?

? ? ? ? ? e.printStackTrace();

? ? ? ? }?

? ? ? ? finally {?

? ? ? ? ? ? try {?

? ? ? ? ? ? ? ? if (in !=null) {?

? ? ? ? ? ? ? ? ? ? in.close();?

? ? ? ? ? ? ? ? }?

? ? ? ? ? ? } catch (Exception e2) {?

? ? ? ? ? ? ? ? e2.printStackTrace();?

? ? ? ? ? ? }?

? ? ? ? }?

? ? ? ? return null;?

? ? }?

单点登录与获取未读数

public String getEmailUrl(String user, String domain, String usertype){String tokenback=httpGetbak("https://api.exmail.qq.com/cgi-bin/gettoken?corpid=wm8c6ece99e54d4813&corpsecret=r8H0thugLH4ds3Jm4HAhnD_gvVtlsBIaJG4KH-5i5kW4rW_4JPF7FnOKVVa1Bc4L");JSonObject jsStr=JSONObject.fromObject(tokenback);String token=jsStr.getString("access_token");String url=" https://api.exmail.qq.com/cgi-bin/service/get_login_url?access_token="+token+"&userid="+user+"@hnust.edu.cn";String loginUrlBack=httpGetbak(url);JSonObject jsback=JSONObject.fromObject(loginUrlBack);loginUrlBack=jsback.getString("login_url");return loginUrlBack;}


public String getUnRead(String user, String domain, String usertype) throws HttpException, IOException {String email=user +"@"+domain;String tokenback=httpGetbak("https://api.exmail.qq.com/cgi-bin/gettoken?corpid=wm8c6ece99e54d4813&corpsecret=WqG1CvlXqy6nrobMIrYCSXhFe80jgoZEw6Epx3s5XIgkRlvUX9H8NkyENW4uGaBH");JSonObject jsStr=JSONObject.fromObject(tokenback);String token=jsStr.getString("access_token"); Mapparams=new HashMap();

? Date currentTime=new Date();?

? SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd");?

? String dateNow=formatter.format(currentTime);

? Calendar c=Calendar.getInstance();

? c.setTime(new Date());

? ? ? ? c.add(Calendar.DATE, - 7);

? ? ? ? Date daybefore=c.getTime();

? ? ? ? String dbef=formatter.format(daybefore);

? ? ? ? params.put("type", "0");?

? ? ? ? params.put("begin_date", dateNow);?

? ? ? ? params.put("end_date", dbef);?

? ? ? ? String url="https://api.exmail.qq.com/cgi-bin/mail/newcount?access_token="+token+"&userid="+email;

? ? PostMethod gmethod=new PostMethod(url);

? ? HttpClient httpclient=new HttpClient();

? ? HttpClientParams ps=new HttpClientParams();

? ? ps.setParameter("type", "0");

? ? ps.setParameter("begin_date", dateNow);

? ? ps.setParameter("end_date", dbef);?

? ? httpclient.setParams(ps);

? ? int responseCode=httpclient.executeMethod(gmethod);

? ? String mailContent="";

? ? if (responseCode==HttpURLConnection.HTTP_OK) {

InputStream inputStream=gmethod.getResponseBodyAsStream();

BufferedReader br=new BufferedReader(new InputStreamReader(

inputStream, "ISO-8859-1"));

StringBuffer resBuffer=new StringBuffer();

String tempStr="";

while ((tempStr=br.readLine()) !=null) {

resBuffer.append(new String(tempStr.getBytes("ISO-8859-1"),

"UTF-8"));

}

? ? mailContent=resBuffer.toString();

? ? JSonObject Str=JSONObject.fromObject(mailContent);

String num=Str.getString("count");

return num;

? ? }

? ? ? ? return "0";

}

(责任编辑:配电箱)
下一篇:

配电箱价格:2021推荐配电箱_家用配电箱

上一篇:

兰洋镇配电箱品牌 质量可靠配电箱专业厂家 贵气配电箱什么样?

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们
 
0相关评论