使用java导入某个msn帐号的好友列表并发送消息
生活随笔
收集整理的這篇文章主要介紹了
使用java导入某个msn帐号的好友列表并发送消息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用java導入某個msn帳號的好友列表并發送消息 導入信息的關鍵是如何對msn的通訊協議進行封裝,這里會有兩個選擇,一個使用openfire(xmlapp協議),另外就是使用jml,前者配置起來相對復雜,但兼容性較好,openfire能夠和任何im進行通訊,包括(skype、msn、smalltalk等)、后者對msn和smalltalk比較好,這里只介紹如何使用jml導入用戶的msn好友列表. (比較郁悶的是,qq的通信協議隨著版本的升級不斷更改,因此對qq做類似的功能可能不太現實,可能需要和騰訊合作了呵呵). jml(Java Msn Manager Liberary)是sourceforge上的一個開源項目,相關jar包可在以下地址中下載: [url]http://sourceforge.net/project/showfiles.php?group_id=118829&package_id=129414&release_id=617947[/url] 建議將其源碼一塊下載下來,因為需要里面的三個包支持包,jml-src-1.0b3.zip,將lib目錄下的jar包copy到你的項目中,然后將jml-1.0b-full.jar包和上述三個包一起引入項目,現在可以寫我們的代碼了。其實直接copy源代碼下的example/的兩個類即可,他們分別是:BasicMessenger和SimpleMsn,直接運行simpleMsn就可以了,但是它會報錯,原因是你需要傳送msn的賬戶名和密碼:代碼如下所示: 修改main函數: public static void main(String[] args) throws Exception
?{
??new SimpleMsn("123123123123@hotmail.com", "*********").start();
?} 運行下就可以得到我們需要的東東了。會在后臺打印,這里面有很多監聽接口,比如當登錄成功時如何如何,當初始化完畢時如何如何等等,需要你自己來搞定了,我們取得用戶列表的代碼在這里: private void listContacts()
?{
??MsnContact[] cons = messenger.getContactList().getContacts();
??System.out.println("您現在有:"+cons.length+"個聯系人,列表如下!");
??????? for (MsnContact con : cons) {
??????????? System.out.println("姓名:"+con.getDisplayName());
??????????? System.out.println("email地址:"+con.getEmail());
??????????? System.out.println("在線狀態:"+con.getStatus());
??????????? if (con.getStatus() != MsnUserStatus.OFFLINE) {
??????????????? System.out.print(con.getEmail()+"開始導入信息");
??????????????? messenger.sendText(con.getEmail(), "hello,這是測試信息,并無惡意!");
??????????? }
//??????????? System.out.println(con.getPersonalMessage());
??????? }
??? } 呵呵,簡單吧,如果要導入qq帳戶的話用這個就不行了。等我研究出來再說吧! 對他們的包解壓然后加入我的一個小程序,個人根絕還是比較方便的,喜歡的話下載吧: 以下是使用方法: /**
?* 為了讓msn徹底退出,這里采用調用子進程的方法
?* 啟動msn
?* 給子進程傳遞三個運行時參數
?* msn帳號?? msn密碼? 和要傳遞的內容
?* 子進程取出的好友email列表通過進程輸入流讀出(對于父進程來說相當于輸出流)
?* @author huql
?*如果不這樣調用,內存可能不能釋放,這是個問題
?*/ public static void main(String args[]){?
?System.getenv();
?String msnCount=[email]1234@hotmail.com[/email];
??? String password="19820000";
??? String message="你好,歡迎訪問[url]www.17k.com[/url],更多精彩盡在其中!";
??? String command="java -cp \"e:/workspace/user.17k.com/web/WEB-INF/lib\"/jml.jar; net.sf.jml.example.SimpleMsn "+msnCount+" "+password+" "+message;
?try {
??Process p=Runtime.getRuntime().exec(command);
??BufferedInputStream in = new BufferedInputStream(p.getInputStream());
??BufferedReader br = new BufferedReader(new InputStreamReader(in));
??String content=br.readLine();
??while(content!=null){
??System.out.println(content);
??content=br.readLine();
??}
?} catch (IOException e) {
??e.printStackTrace();
?}
?System.out.println("continue to excute other program...............");
}
?{
??new SimpleMsn("123123123123@hotmail.com", "*********").start();
?} 運行下就可以得到我們需要的東東了。會在后臺打印,這里面有很多監聽接口,比如當登錄成功時如何如何,當初始化完畢時如何如何等等,需要你自己來搞定了,我們取得用戶列表的代碼在這里: private void listContacts()
?{
??MsnContact[] cons = messenger.getContactList().getContacts();
??System.out.println("您現在有:"+cons.length+"個聯系人,列表如下!");
??????? for (MsnContact con : cons) {
??????????? System.out.println("姓名:"+con.getDisplayName());
??????????? System.out.println("email地址:"+con.getEmail());
??????????? System.out.println("在線狀態:"+con.getStatus());
??????????? if (con.getStatus() != MsnUserStatus.OFFLINE) {
??????????????? System.out.print(con.getEmail()+"開始導入信息");
??????????????? messenger.sendText(con.getEmail(), "hello,這是測試信息,并無惡意!");
??????????? }
//??????????? System.out.println(con.getPersonalMessage());
??????? }
??? } 呵呵,簡單吧,如果要導入qq帳戶的話用這個就不行了。等我研究出來再說吧! 對他們的包解壓然后加入我的一個小程序,個人根絕還是比較方便的,喜歡的話下載吧: 以下是使用方法: /**
?* 為了讓msn徹底退出,這里采用調用子進程的方法
?* 啟動msn
?* 給子進程傳遞三個運行時參數
?* msn帳號?? msn密碼? 和要傳遞的內容
?* 子進程取出的好友email列表通過進程輸入流讀出(對于父進程來說相當于輸出流)
?* @author huql
?*如果不這樣調用,內存可能不能釋放,這是個問題
?*/ public static void main(String args[]){?
?System.getenv();
?String msnCount=[email]1234@hotmail.com[/email];
??? String password="19820000";
??? String message="你好,歡迎訪問[url]www.17k.com[/url],更多精彩盡在其中!";
??? String command="java -cp \"e:/workspace/user.17k.com/web/WEB-INF/lib\"/jml.jar; net.sf.jml.example.SimpleMsn "+msnCount+" "+password+" "+message;
?try {
??Process p=Runtime.getRuntime().exec(command);
??BufferedInputStream in = new BufferedInputStream(p.getInputStream());
??BufferedReader br = new BufferedReader(new InputStreamReader(in));
??String content=br.readLine();
??while(content!=null){
??System.out.println(content);
??content=br.readLine();
??}
?} catch (IOException e) {
??e.printStackTrace();
?}
?System.out.println("continue to excute other program...............");
}
轉載于:https://blog.51cto.com/huqilong/104166
總結
以上是生活随笔為你收集整理的使用java导入某个msn帐号的好友列表并发送消息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 就职前的准备工作
- 下一篇: Linux中设置ip