How to Retrieve the Members of a Private Distribution List
The following piece of code demonstrates how to retrieve the members of Private Distribution List stored in a user's Contacts folder. For more information about any CDO object or method used below, please refer to the Microsoft CDO reference. Before running this code, please ensure that you have first configured CDO.
|
import com.intrinsyc.cdo.*;
import com.linar.jintegra.Cleaner;
public class RetrievePrivateDLMembers {
public static void main(String[] args) {
System.setProperty("JINTEGRA_RELEASEALL_SHUTDOWN_HOOK", "");
//TODO: Change the following parameters based on your setup and configuration
// the logon parameters of the service account you used to configure CDO
String domain = "domain";
String username = "username";
String password = "password";
// the DNS name or IP address of the machine where you installed CDO
String CDOmachine = "0.0.0.0";
// the DNS name or IP address of the Exchange Server
String exchangeServer = "0.0.0.0";
// the mailbox you wish to access (NOTE: this is the same as the user's login name
// e.g., if the username is jsmith, mailbox would also be jsmith )
String mailbox = "mailbox";
// field and propset ids
String CdoPropSetID3 = "0420060000000000C000000000000046";
String CdoContact_PrivateDLMemberIDs = "0x8054";
try {
// use credentials of service account to authenticate to Windows
com.linar.jintegra.AuthInfo.setDefault(domain, username, password);
// create a Session in the CDOmachine
Session session = new Session(CDOmachine);
// logon to the Exchange Server
session.logon(null, null, new Boolean(false), new Boolean(true),
new Boolean(false), new Boolean(false),
exchangeServer + "\n" + mailbox);
// print the current user for this Session
AddressEntry user = new AddressEntryProxy(session.getCurrentUser());
System.out.println("Current user: " + user.getName() + "\n");
// retrieve the contacts folder
Integer folderType = new Integer(CdoDefaultFolderTypes.CdoDefaultFolderContacts);
Folder contacts = new FolderProxy(session.getDefaultFolder(folderType));
// and get the message collection
Messages messages = new MessagesProxy(contacts.getMessages());
int count = ((Integer)messages.getCount()).intValue();
System.out.println("Contacts Count: " + count);
// iterate through message collection
for (int i = 1; i <= count; i++) {
Message contactObj = new MessageProxy(messages.getItem(new Integer(i)));
String contactName = contactObj.getSubject().toString();
String contactType = contactObj.getType().toString();
System.out.println(contactName + " -- " + contactType);
// check for IPM.DistList type
if ( contactObj.getType().toString().compareTo("IPM.DistList") == 0 ) {
// extract field containing IDs of members
Fields fds = new FieldsProxy(contactObj.getFields());
Field fd = new FieldProxy(fds.getItem(CdoContact_PrivateDLMemberIDs, CdoPropSetID3));
Object[] fdValue = (Object[])fd.getValue();
int fdCount = fdValue.length;
System.out.println(" ... Members: " + fdCount);
// get members' AddressEntry and output name
for (int k = 0; k < fdCount; k++) {
String ID = (String)fdValue[k];
AddressEntry addr = new AddressEntryProxy(session.getAddressEntry(ID));
System.out.println(" ...... " + addr.getName().toString());
}
}
}
System.out.println("\nDONE!");
// log off from the session
session.logoff();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
// clean up and release all references
com.linar.jintegra.Cleaner.releaseAll();
}
}
} |
|