Java读取MSN的好友列表

今天遇到这么个需求:邮件群发的功能,需要把邮件发给MSN上的所有好友,这就要求必须能通过程序取得当前MSN用户的所有好友列表。一开始只是在别的网站上看到类似的功能,google了一通发现一个韩国的开源包JMSN提供MSN的所有功能,下载请点击 http://sourceforge.net/project/showfiles.php?group_id=47932;点击下载msnm-lib,在网上搜了段代码,修改了一下,现在贴到这里!

 

 

具体代码实现如下所示:

import java.util.Iterator;

import rath.msnm.BuddyGroup;

import rath.msnm.BuddyList;

import rath.msnm.MSNMessenger;

import rath.msnm.SwitchboardSession;

import rath.msnm.UserStatus;

import rath.msnm.entity.MsnFriend;

import rath.msnm.event.MsnAdapter;

import rath.msnm.msg.MimeMessage;

/**

 *

 * @time:           Apr 28, 2009 1:29:35 PM

 * @author:        聂靖宇

 * @QQ:             6241899

 * @MSN:           [email protected]

 * @Email:         [email protected]

 * @Description: Java读取MSN好友列表

 */

public class MSNDaemon extends Thread {

    private static MSNMessenger msn;

 

    /**

     * @param args

     */

    public static void main(String[] args) {

       msn = new MSNMessenger("[email protected]", "12345678");

       msn.setInitialStatus(UserStatus.ONLINE);

       msn.addMsnListener(new MSNAdapter(msn));

       msn.login();

       System.out.println("Waiting for the response....");

       Runtime.getRuntime().addShutdownHook(new MSNDaemon());

    }

 

    /**

     * 用户中止程序执行

     */

    public void run() {

       msn.logout();

       System.out.println("MSN Logout OK");

    }

}

 

/**

 * MSN消息事件处理类

 *

 */

class MSNAdapter extends MsnAdapter {

    MSNMessenger messenger;

 

    public MSNAdapter(MSNMessenger messenger) {

       this.messenger = messenger;

    }

 

    /**

     * 某人正在输入信息

     */

    public void progressTyping(SwitchboardSession ss, MsnFriend friend,

                                  String typingUser) {

       System.out.println(friend.getLoginName() + "正在输入信息...");

    }

 

    /**

     * 收到消息的时候执行该方法

     */

    public void instantMessageReceived(SwitchboardSession ss, MsnFriend friend,MimeMessage mime) {

       System.out.print("接收到消息:" + friend.getFriendlyName() + "->");

       System.out.println(mime.getMessage());

       try {

           // 发送相同的回复信息给发送者

           messenger.sendMessage(friend.getLoginName(), mime);

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

 

    /**

     * 登录成功后执行该方法

     */

    public void loginComplete(MsnFriend own) {

       System.out.println(own.getLoginName() + " Login OK");

       BuddyGroup group = messenger.getBuddyGroup();

       BuddyList buddyList = group.getAllowList();

       System.out.println("begin");

       for (Iterator it = buddyList.iterator(); it.hasNext();) {

           MsnFriend friend = (MsnFriend) it.next();

           System.out.println("昵称:"+friend.getFriendlyName() + ", "

                               +"MSN"+ friend.getLoginName());

       }

    }

 

    /**

     * 登录失败后执行该方法

     */

    public void loginError(String header) {

       System.out.println("Login Failed: " + header);

    }

 

    /**

     * 好友离线时执行该方法

     */

    public void userOffline(String loginName) {

       System.out.println("USER " + loginName + " Logout.");

    }

 

    /**

     * 好友上线时执行该方法

     */

    public void userOnline(MsnFriend friend) {

       System.out.println("USER " + friend.getFriendlyName() +

" Login.");

    }

 

    /**

     * 有人加我为好友时执行

     */

    public void whoAddedMe(MsnFriend friend) {

       System.out.println("USER " + friend.getLoginName() + " Addme.");

       try {

           messenger.addFriend(friend.getLoginName());

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

 

    /**

     * 输出结果

     */

     Waiting for the response....
     [email protected] Login OK
     好友列表开始......
     昵称:石头, MSN:[email protected]
     昵称:木头, MSN:[email protected]
     USER test Login.

你可能感兴趣的:(java,PHP,qq,Google,Gmail)