【发布时间】:2017-04-12 13:35:38
【问题描述】:
我正在编写一个程序,用于将联系人从 ERP 系统导入 Outlook。不同的电子邮件将收到来自 ERP 的不同联系人列表。这里的想法是,在每封电子邮件中,我都有一个技术用户可以访问的公共联系人文件夹。技术用户可以将联系人写入此文件夹。这是搜索文件夹的代码:
protected FolderId findFolderId(String folderDisplayName, String userEmail) throws Exception {
Mailbox userMailbox = new Mailbox(userEmail);
FolderId contactRootFolder = new FolderId(WellKnownFolderName.Root, userMailbox);
FolderId result = null;
FolderView view = new FolderView(Integer.MAX_VALUE);
view.setPropertySet(new PropertySet(BasePropertySet.IdOnly, FolderSchema.DisplayName));
view.setTraversal(FolderTraversal.Deep);
FindFoldersResults findFolderResults = this.service.findFolders(contactRootFolder, view);
//find specific folder
for (Folder f : findFolderResults) {
if (folderDisplayName.equals(f.getDisplayName())) {
result = f.getId();
}
}
return result;
}
服务对象的创建如下:
this.service = new ExchangeService();
ExchangeCredentials credentials = new WebCredentials(userName, passWord);
this.service.setCredentials(credentials);
try {
this.service.setUrl(new URI(URL));
} catch (URISyntaxException e) {
LOGGER.error(e);
}
其中 URL 是 Exchange 服务器的端点(对于 Office 365,它是 https://outlook.office365.com/EWS/Exchange.asmx)。
代码适用于 Office 2010,我从该文件夹中获取 Id,连接到它并保存联系人。迁移到 Office 365 后,我们找不到公用文件夹。它只能找到一个名为“PeoplePublicData”的文件夹。 (我什至不知道那个文件夹存在。)
【问题讨论】:
标签: java outlook office365 exchangewebservices