package com.jacob.samples.outlook;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class Outlook {
private static String pad(int i) {
StringBuffer sb = new StringBuffer();
while (sb.length() < i) {
sb.append(' ');
}
return sb.toString();
}
private static void recurseFolders(int iIndent, Dispatch o) {
if (o == null) {
return;
}
Dispatch oFolders = Dispatch.get(o, "Folders").toDispatch();
if (oFolders == null) {
return;
}
Dispatch oFolder = Dispatch.get(oFolders, "GetFirst").toDispatch();
do {
Object oFolderName;
try {
oFolderName = Dispatch.get(oFolder, "Name");
if (null == oFolderName) {
break;
}
} catch (IllegalStateException e) {
break;
}
System.out.println(pad(iIndent) + oFolderName);
recurseFolders(iIndent + 3, oFolder);
Dispatch items = Dispatch.get(oFolder, "Items").toDispatch();
Dispatch item = Dispatch.get(items, "GetFirst").toDispatch();
if (item != null) try {
Object subject = Dispatch.get(item, "Subject");
Object body = Dispatch.get(item, "Body");
System.out.println(pad(iIndent) + "Mail: " + subject + "\nBody: " + body);
} catch (Exception e) {
}
oFolder = Dispatch.get(oFolders, "GetNext").toDispatch();
} while (true);
}
public static void main(String asArgs[]) throws Exception {
System.out.println("Outlook: IN");
ActiveXComponent axOutlook = new ActiveXComponent("Outlook.Application");
try {
System.out.println("version=" + axOutlook.getProperty("Version"));
Dispatch oOutlook = axOutlook.getObject();
System.out.println("version=" + Dispatch.get(oOutlook, "Version"));
Dispatch oNameSpace = axOutlook.getProperty("Session").toDispatch();
System.out.println("oNameSpace=" + oNameSpace);
recurseFolders(0, oNameSpace);
} finally {
axOutlook.invoke("Quit", new Variant[] {});
}
}
}