日期:2014-05-20  浏览次数:20756 次

急求Java读取电子邮件LDAP服务上联系人的方法
现在需要从一LDAP服务上取得所有联系人的信息(用outlook的LDAP服务可以看到联系人)。请给一个用纯Java代码读取的方法(最好不要用框架),告诉我:
1:如何连接
2:如何读取
3:最好告诉我在服务器的存储结构(我知道是树状;难道是一个根,下面全是叶子吗?)
不胜感激!!!

------解决方案--------------------
Java code

import javax.naming.*;
import javax.naming.directory.*;
import java.util.Hashtable;

public class SimpleQuery {

    public static void main(String[] args) {

        if (args.length != 2) {
          System.out.println("Syntax: SimpleQuery query attribute");
          return;
        }

        String query = args[0];
        String attribute = args[1];
        StringBuffer output = new StringBuffer();

        try {
            String url = "ldap://directory.cornell.edu/o=Cornell%20University,c=US";
            Hashtable env = new Hashtable();
            env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.PROVIDER_URL, url);
            DirContext context = new InitialDirContext(env);

            SearchControls ctrl = new SearchControls();
            ctrl.setSearchScope(SearchControls.SUBTREE_SCOPE);
            NamingEnumeration enumeration = context.search("", query, ctrl);
            while (enumeration.hasMore()) {
                SearchResult result = (SearchResult) enumeration.next();
                Attributes attribs = result.getAttributes();
                NamingEnumeration values = ((BasicAttribute) attribs.get(attribute)).getAll();
                while (values.hasMore()) {
                  if (output.length() > 0) {
                    output.append("|");
                  }
                  output.append(values.next().toString());
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.print(output.toString());
    }

    public SimpleQuery() {}
}

------解决方案--------------------
用ldp工具在服务器上先看下目录结构 ldp在server03安装盘里面有吧
------解决方案--------------------
探讨

杯具的方法就要结束了,但是我还不知道通讯录的默认DN是多少,但我感觉所有通讯录都有一个showInAddressBook属性,感觉应该有用,不过不会用(6#说用ldap工具,找时间试试)。。
CN=Default Global Address List CN=All Global Address Lists CN=Address Lists Container CN=MesCEd CN=Mic……

------解决方案--------------------
如果我没记错DN是域名,你不同的域怎么可能有相同的DN
------解决方案--------------------
哎 你等高手回答吧 这个东西我一点兴趣都没有 就稍微接触过一点
------解决方案--------------------
目前这个网上有搭建好的可用的服务器(用来管理联系人的)吗?
看不懂啊