java httpclient 为邮箱添加来信转发规则
生活随笔
收集整理的這篇文章主要介紹了
java httpclient 为邮箱添加来信转发规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
import?java.text.MessageFormat; import?java.util.HashMap; import?java.util.Map;import?org.apache.http.Header; import?org.apache.http.message.BasicHeader; import?org.jsoup.Jsoup; import?org.jsoup.nodes.Document;/***?對網易yeah.net郵箱用戶添加轉發規則*?*?@since?2014-6-6?14:52:09*/ public?class?MailYeahTest?{public?static?final?String?SESSION_INIT?=?"http://mail.yeah.net";public?static?final?String?LOGIN_URL?=?"https://mail.yeah.net/entry/cgi/ntesdoor?df=webmailyeah&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&verifycookie=1&product=mailyeah&style=-1&uid=";public?static?final?String?RULE_POST_URl?=?"http://mail.yeah.net/js5/s?sid={0}&func=user:addMailRules";public?static?final?String?RULE_LIST_URl?=?"http://mail.yeah.net/js5/s?sid={0}&func=user:getMailRules&from=nav&group=options-0&id=NaN&action=click";public?static?final?String?RULE_NAME?=?"規則名稱";public?static?final?String?FORWARD_MAIL?=?"你要轉到的email地址";/***?@param?args*/public?static?void?main(String[]?args)?{HttpClientHelper?hc?=?new?HttpClientHelper(true);HttpResult?lr?=?hc.get(SESSION_INIT);//?目的是得到?csrfToken?類似//?拼裝登錄信息Map<String,?String>?data?=?new?HashMap<String,?String>();String?username?;data.put("username",?username?="*******@yeah.net");data.put("savelogin",?"0");data.put("url2",?"http://mail.yeah.net/errorpage/err_yeah.htm");data.put("password",?"********");lr?=?hc.post(LOGIN_URL,?data,setHeader());//?執行登錄Document?doc?=?Jsoup.parse(lr.getHtml());System.out.println("doc========"+doc);String?sessionId=doc.select("script").html().split("=")[2];sessionId?=?sessionId.substring(0,sessionId.length()-2);System.out.println("sessionId=========="+sessionId);//查詢用戶的來來信列表中是否包含“***”字樣 ?有則不再進行轉發規則的添加data.clear();data.put("var",?"<?xml?version=\"1.0\"?><object/>");lr?=?hc.post(MessageFormat.format(RULE_LIST_URl,?sessionId),data,?setHeaderTORuleList(sessionId));//轉發if(!lr.getHtml().contains(RULE_NAME)){data.clear();???????????????data.put("var",?"<?xml?version=\"1.0\"?><object><array?name=\"items\"><object><string?name=\"name\">"+RULE_NAME+"</string><boolean?name=\"disabled\">false</boolean><boolean?name=\"continue\">true</boolean><array?name=\"condictions\"><object><boolean?name=\"disabled\">false</boolean><string?name=\"field\">subject</string><string?name=\"operand\">我是好人</string><boolean?name=\"ignoreCase\">true</boolean><string?name=\"operator\">contains</string></object><object><string?name=\"field\">accounts</string><string?name=\"operator\">contains</string><array?name=\"operand\"><string>"+username+"</string></array></object></array><array?name=\"actions\"><object><string?name=\"type\">forward</string><string?name=\"target\">"+FORWARD_MAIL+"</string><boolean?name=\"keepLocal\">true</boolean></object></array></object></array></object>");lr?=?hc.post(MessageFormat.format(RULE_POST_URl,?sessionId),data,?setHeaderTORulePost(sessionId));data.clear();data.put("var",?"<?xml?version=\"1.0\"?><object><array?name=\"items\"><object><string?name=\"name\">"+RULE_NAME+"</string><boolean?name=\"disabled\">false</boolean><boolean?name=\"continue\">true</boolean><array?name=\"condictions\"><object><boolean?name=\"disabled\">false</boolean><string?name=\"field\">subject</string><string?name=\"operand\">你是壞人</string><boolean?name=\"ignoreCase\">true</boolean><string?name=\"operator\">contains</string></object><object><string?name=\"field\">accounts</string><string?name=\"operator\">contains</string><array?name=\"operand\"><string>"+username+"</string></array></object></array><array?name=\"actions\"><object><string?name=\"type\">forward</string><string?name=\"target\">"+FORWARD_MAIL+"</string><boolean?name=\"keepLocal\">true</boolean></object></array></object></array></object>");lr?=?hc.post(MessageFormat.format(RULE_POST_URl,?sessionId),data,?setHeaderTORulePost(sessionId));data.clear();data.put("var",?"<?xml?version=\"1.0\"?><object><array?name=\"items\"><object><string?name=\"name\">"+RULE_NAME+"</string><boolean?name=\"disabled\">false</boolean><boolean?name=\"continue\">true</boolean><array?name=\"condictions\"><object><boolean?name=\"disabled\">false</boolean><string?name=\"field\">subject</string><string?name=\"operand\">呵呵</string><boolean?name=\"ignoreCase\">true</boolean><string?name=\"operator\">contains</string></object><object><string?name=\"field\">accounts</string><string?name=\"operator\">contains</string><array?name=\"operand\"><string>"+username+"</string></array></object></array><array?name=\"actions\"><object><string?name=\"type\">forward</string><string?name=\"target\">"+FORWARD_MAIL+"</string><boolean?name=\"keepLocal\">true</boolean></object></array></object></array></object>");lr?=?hc.post(MessageFormat.format(RULE_POST_URl,?sessionId),data,?setHeaderTORulePost(sessionId));}System.out.println(lr.getHtml()); //響應信息}public?static?Header[]?setHeader()?{Header[]?result?=?{new?BasicHeader("User-Agent","Mozilla/5.0?(compatible;?MSIE?9.0;?Windows?NT?6.1;?Trident/5.0)"),new?BasicHeader("Accept-Encoding","gzip,?deflate"),new?BasicHeader("Accept-Language","zh-CN"),new?BasicHeader("Connection","Keep-Alive"),new?BasicHeader("Host","mail.yeah.net"),new?BasicHeader("Referer","http://mail.yeah.net/"),new?BasicHeader("Accept","text/html,?application/xhtml+xml,?*/*")};return?result;}public?static?Header[]?setHeaderTORulePost(String?sessionId)?{Header[]?result?=?{new?BasicHeader("Host","mail.yeah.net"),new?BasicHeader("User-Agent","Mozilla/5.0?(Windows?NT?6.1;?WOW64;?rv:29.0)?Gecko/20100101?Firefox/29.0"),new?BasicHeader("Accept","text/javascript"),new?BasicHeader("Accept-Language","zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"),new?BasicHeader("Accept-Encoding","gzip,?deflate"),new?BasicHeader("Content-Type","application/x-www-form-urlencoded;?charset=UTF-8"),new?BasicHeader("Referer","http://mail.yeah.net/js5/main.jsp?sid="+sessionId+"&df=webmailyeah"),new?BasicHeader("Connection","Keep-Alive"),new?BasicHeader("Pragma","no-cache"),new?BasicHeader("Cache-Control","no-cache")};return?result;}public?static?Header[]?setHeaderTORuleList(String?sessionId)?{Header[]?result?=?{new?BasicHeader("Host","mail.yeah.net"),?new?BasicHeader("User-Agent","Mozilla/5.0?(Windows?NT?6.1;?WOW64;?rv:29.0)?Gecko/20100101?Firefox/29.0"),new?BasicHeader("Accept","text/javascript"),new?BasicHeader("Accept-Language","zh-CN"),new?BasicHeader("Accept-Encoding","gzip,?deflate"),new?BasicHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"),new?BasicHeader("Referer","http://mail.yeah.net/js5/main.jsp?sid="+sessionId+"&df=webmailyeah"),new?BasicHeader("Connection","Keep-Alive"),new?BasicHeader("Pragma","no-cache"),new?BasicHeader("Cache-Control","no-cache")};return?result;} }----------------------------------------------------------------------------------------------- import?java.io.IOException; import?java.security.cert.CertificateException; import?java.security.cert.X509Certificate; import?java.util.ArrayList; import?java.util.List; import?java.util.Map;import?javax.net.ssl.SSLContext; import?javax.net.ssl.TrustManager; import?javax.net.ssl.X509TrustManager;import?org.apache.commons.lang.StringUtils; import?org.apache.http.Header; import?org.apache.http.HttpResponse; import?org.apache.http.NameValuePair; import?org.apache.http.client.HttpClient; import?org.apache.http.client.entity.UrlEncodedFormEntity; import?org.apache.http.client.methods.HttpGet; import?org.apache.http.client.methods.HttpPost; import?org.apache.http.conn.ClientConnectionManager; import?org.apache.http.conn.scheme.Scheme; import?org.apache.http.conn.scheme.SchemeRegistry; import?org.apache.http.conn.ssl.SSLSocketFactory; import?org.apache.http.cookie.Cookie; import?org.apache.http.impl.client.BasicCookieStore; import?org.apache.http.impl.client.DefaultHttpClient; import?org.apache.http.message.BasicHeader; import?org.apache.http.message.BasicNameValuePair; import?org.apache.http.protocol.BasicHttpContext; import?org.apache.http.protocol.HttpContext; /***?HttpClient?封裝**?@author?bangis.wangdf*/ public?class?HttpClientHelper?{private?HttpClient???????httpclient???????=?new?DefaultHttpClient();private?HttpContext??????localContext?????=?new?BasicHttpContext();private?BasicCookieStore?basicCookieStore?=?new?BasicCookieStore();??????????????????????????//?cookie存儲用來完成登錄后記錄相關信息private?int??????????????TIME_OUT?????????=?3;??????????????????????????????????????????????//?連接超時時間public?HttpClientHelper()?{instance();}/***?啟用cookie存儲*/private?void?instance()?{httpclient.getParams().setIntParameter("http.socket.timeout",?TIME_OUT?*?1000);localContext.setAttribute("http.cookie-store",?basicCookieStore);//?Cookie存儲}/***?@param?ssl?boolean=true?支持https網址,false同默認構造*/public?HttpClientHelper(boolean?ssl)?{instance();if?(ssl)?{try?{X509TrustManager?tm?=?new?X509TrustManager()?{public?void?checkClientTrusted(X509Certificate[]?xcs,?String?string)?throws?CertificateException?{}public?void?checkServerTrusted(X509Certificate[]?xcs,?String?string)?throws?CertificateException?{}public?X509Certificate[]?getAcceptedIssuers()?{return?null;}};SSLContext?ctx?=?SSLContext.getInstance("TLS");ctx.init(null,?new?TrustManager[]?{?tm?},?null);SSLSocketFactory?ssf?=?new?SSLSocketFactory(ctx);ClientConnectionManager?ccm?=?httpclient.getConnectionManager();SchemeRegistry?sr?=?ccm.getSchemeRegistry();sr.register(new?Scheme("https",?ssf,?443));}?catch?(Exception?e)?{e.printStackTrace();}}}/***?@param?url*?@param?headers?指定headers*?@return*/public?HttpResult?get(String?url,?Header...?headers)?{HttpResponse?response;HttpGet?httpget?=?new?HttpGet(url);if?(headers?!=?null)?{for?(Header?h?:?headers)?{httpget.addHeader(h);}}?else?{//?如不指定則使用默認Header?header?=?new?BasicHeader("User-Agent","Mozilla/4.0?(compatible;?MSIE?7.0;?Windows?NT?5.1;??.NET?CLR?2.0.50727;?.NET?CLR?3.0.04506.648;?.NET?CLR?3.5.21022;?.NET?CLR?3.0.4506.2152;?.NET?CLR?3.5.30729;?InfoPath.2)");httpget.addHeader(header);}HttpResult?httpResult?=?HttpResult.empty();try?{response?=?httpclient.execute(httpget,?localContext);httpResult?=?new?HttpResult(localContext,?response);}?catch?(IOException?e)?{httpget.abort();}return?httpResult;}public?HttpResult?post(String?url,?Map<String,?String>?data,?Header...?headers)?{HttpResponse?response;HttpPost?httppost?=?new?HttpPost(url);String?contentType?=?null;if?(headers?!=?null)?{int?size?=?headers.length;for?(int?i?=?0;?i?<?size;?++i)?{Header?h?=?(Header)?headers[i];if?(!(h.getName().startsWith("$x-param")))?{httppost.addHeader(h);}if?("Content-Type".equalsIgnoreCase(h.getName()))?{contentType?=?h.getValue();}}}if?(contentType?!=?null)?{httppost.setHeader("Content-Type",?contentType);}?else?if?(data?!=?null)?{httppost.setHeader("Content-Type",?"application/x-www-form-urlencoded");}List<NameValuePair>?formParams?=?new?ArrayList<NameValuePair>();for?(String?key?:?data.keySet())?{formParams.add(new?BasicNameValuePair(key,?(String)?data.get(key)));}HttpResult?httpResult?=?HttpResult.empty();try?{UrlEncodedFormEntity?entity?=?new?UrlEncodedFormEntity(formParams,?"UTF-8");httppost.setEntity(entity);response?=?httpclient.execute(httppost,?localContext);httpResult?=?new?HttpResult(localContext,?response);}?catch?(IOException?e)?{httppost.abort();}?finally?{}return?httpResult;}public?String?getCookie(String?name,?String...?domain)?{String?dm?=?"";if?(domain?!=?null?&&?domain.length?>=?1)?{dm?=?domain[0];}for?(Cookie?c?:?basicCookieStore.getCookies())?{if?(StringUtils.equals(name,?c.getName())?&&?StringUtils.equals(dm,?c.getDomain()))?{return?c.getValue();}}return?null;}public?void?pringCookieAll()?{for?(Cookie?c?:?basicCookieStore.getCookies())?{System.out.println(c);}} }----------------------------------------------------------------------------------------------- import?java.io.ByteArrayOutputStream; import?java.io.IOException; import?java.io.UnsupportedEncodingException; import?java.security.cert.CertificateException; import?java.security.cert.X509Certificate; import?java.util.ArrayList; import?java.util.Arrays; import?java.util.List; import?java.util.Map; import?java.util.regex.Matcher; import?java.util.regex.Pattern; import?java.util.zip.GZIPInputStream;import?javax.net.ssl.SSLContext; import?javax.net.ssl.TrustManager; import?javax.net.ssl.X509TrustManager;import?org.apache.commons.lang.StringUtils; import?org.apache.http.Header; import?org.apache.http.HttpHost; import?org.apache.http.HttpResponse; import?org.apache.http.NameValuePair; import?org.apache.http.client.HttpClient; import?org.apache.http.client.entity.UrlEncodedFormEntity; import?org.apache.http.client.methods.HttpGet; import?org.apache.http.client.methods.HttpPost; import?org.apache.http.client.methods.HttpUriRequest; import?org.apache.http.conn.ClientConnectionManager; import?org.apache.http.conn.scheme.Scheme; import?org.apache.http.conn.scheme.SchemeRegistry; import?org.apache.http.conn.ssl.SSLSocketFactory; import?org.apache.http.cookie.Cookie; import?org.apache.http.impl.client.BasicCookieStore; import?org.apache.http.impl.client.DefaultHttpClient; import?org.apache.http.message.BasicHeader; import?org.apache.http.message.BasicNameValuePair; import?org.apache.http.protocol.BasicHttpContext; import?org.apache.http.protocol.HttpContext; import?org.apache.http.util.EntityUtils; /***?對HttpClient返回的結果進一步封裝*?@author?bangis.wangdf**/ public?class?HttpResult?{private?static?Pattern?headerCharsetPattern?=?Pattern.compile("charset=((gb2312)|(gbk)|(utf-8))",?2);private?static?Pattern?pattern?=?Pattern.compile("<meta[^>]*content=(['\"])?[^>]*charset=((gb2312)|(gbk)|(utf-8))\\1[^>]*>",2);private?String?headerCharset;private?String?headerContentType;private?String?headerContentEncoding;private?List<Header>?headers;private?String?metaCharset;private?byte[]?response;private?String?responseUrl;private?int?statuCode?=?-1;private?static?final?int?BUFFER_SIZE?=?4096;public?static?HttpResult?empty()?{return?new?HttpResult();}public?String?getHeaderCharset()?{return?this.headerCharset;}public?String?getHeaderContentType()?{return?this.headerContentType;}public?final?List<Header>?getHeaders()?{return?this.headers;}public?String?getHtml()?{try?{return?getText();}?catch?(UnsupportedEncodingException?e)?{}return?"";}public?String?getHtml(String?encoding)?{try?{return?getText(encoding);}?catch?(UnsupportedEncodingException?e)?{e.printStackTrace();}return?"";}public?String?getMetaCharset()?{return?this.metaCharset;}public?byte[]?getResponse()?{return?Arrays.copyOf(this.response,?this.response.length);}public?String?getResponseUrl()?{return?this.responseUrl;}public?int?getStatuCode()?{return?this.statuCode;}public?String?getText()?throws?UnsupportedEncodingException?{return?getText("");}public?String?getText(String?encoding)?throws?UnsupportedEncodingException?{if?(this.response?==?null){return?"";}String?encodingStr?=?encoding;if?(StringUtils.isBlank(encoding)){encodingStr?=?this.metaCharset;}if?(StringUtils.isBlank(encoding)){encodingStr?=?this.headerCharset;}if?(StringUtils.isBlank(encoding)){encodingStr?=?"UTF-8";}return?new?String(this.response,?encodingStr);}private?String?getCharsetFromMeta()?{StringBuilder?builder?=?new?StringBuilder();String?charset?=?"";for?(int?i?=?0;?(i?<?this.response.length)?&&?("".equals(charset));?++i)?{char?c?=?(char)?this.response[i];switch?(c)?{case?'<':builder.delete(0,?builder.length());builder.append(c);break;case?'>':if?(builder.length()?>?0){builder.append(c);}String?meta?=?builder.toString();if?(meta.toLowerCase().startsWith("<meta")){charset?=?getCharsetFromMeta(meta);}break;case?'=':default:if?(builder.length()?>?0){builder.append(c);}}}return?charset;}private?String?getCharsetFromMeta(String?meta)?{if?(StringUtils.isBlank(meta)){return?"";}Matcher?m?=?pattern.matcher(meta);if?(m.find()){return?m.group(2);}return?"";}private?void?getHttpHeaders(HttpResponse?httpResponse)?{String?headerName?=?"";String?headerValue?=?"";int?index?=?-1;Header[]?rspHeaders?=?httpResponse.getAllHeaders();for?(int?i?=?0;?i?<?rspHeaders.length;?++i)?{Header?header?=?rspHeaders[i];this.headers.add(header);headerName?=?header.getName();if?("Content-Type".equalsIgnoreCase(headerName))?{headerValue?=?header.getValue();index?=?headerValue.indexOf(';');if?(index?>?0){this.headerContentType?=?headerValue.substring(0,?index);}Matcher?m?=?headerCharsetPattern.matcher(headerValue);if?(m.find()){this.headerCharset?=?m.group(1);}}if?("Content-Encoding".equalsIgnoreCase(headerName)){this.headerContentEncoding?=?header.getValue();}}}private?void?getResponseUrl(HttpContext?httpContext)?{HttpHost?target?=?(HttpHost)?httpContext.getAttribute("http.target_host");HttpUriRequest?req?=?(HttpUriRequest)?httpContext.getAttribute("http.request");this.responseUrl?=?target.toString()?+?req.getURI().toString();}public?HttpResult(HttpContext?httpContext,?HttpResponse?httpResponse)?{this.headers?=?new?ArrayList<Header>();this.statuCode?=?httpResponse.getStatusLine().getStatusCode();if?(httpContext?!=?null)?{getResponseUrl(httpContext);}if?(httpResponse?!=?null)?{getHttpHeaders(httpResponse);try?{if?(("gzip".equalsIgnoreCase(this.headerContentEncoding))||?("deflate".equalsIgnoreCase(this.headerContentEncoding)))?{GZIPInputStream?is?=?new?GZIPInputStream(httpResponse.getEntity().getContent());ByteArrayOutputStream?os?=?new?ByteArrayOutputStream();byte[]?buffer?=?new?byte[BUFFER_SIZE];int?count?=?0;while?((count?=?is.read(buffer))?>?0){os.write(buffer,?0,?count);}this.response?=?os.toByteArray();os.close();is.close();}else{this.response?=?EntityUtils.toByteArray(httpResponse.getEntity());}}?catch?(Exception?e)?{e.printStackTrace();}if?(this.response?!=?null){this.metaCharset?=?getCharsetFromMeta();}}}private?HttpResult()?{} }轉載于:https://my.oschina.net/u/1052562/blog/275195
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的java httpclient 为邮箱添加来信转发规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读写锁ReadWriteLock
- 下一篇: Windows下的文件类型