2014-08-30 54 views
0

我正在使用新的Office365 API(http://visualstudiogallery.msdn.microsoft.com/7e947621-ef93-4de7-93d3-d796c43ba34f) 使C#客户端在线连接到Office365,特别是Exchange服务。 客户可以通过授权的Office365用户阅读和发送邮件。 客户端应用程序无法在根联机交换目录或任何子文件夹中创建新的(子)文件夹,尽管所有者已相应地设置了父文件夹权限(手动输入https://outlook.office365。 COM/OWA /?境界= SomeCompany.onmicrosoft.com)。使用“Office365 API”的本地(C#)客户端无法在联机帐户中创建邮件文件夹

我的源代码:

Microsoft.Office365.Exchange.ExchangeClient XClient; 

//authorization, XClient can read/send mails.... 
IFolder newFolder = new Microsoft.Office365.Exchange.Folder(); 
newFolder.DisplayName = "someFolderName"; 
newFolder.ParentFolderId = "Some valid parent folder Id"; 
newFolder.ClassName = "IPF.Note"; 
newFolder.Id = "AAMkAGVlNT...."; 
await XClient.Me.Folders.AddFolderAsync(newFolder); 
         //throws exception "ID must be non-empty" 

从现有的资料如何 “使用EWS创建一个文件夹”(见例如http://msdn.microsoft.com/en-us/library/office/dn535504(v=exchg.150).aspx#bk_createfolderews) 我预计,只有父ID和显示名称需要进行设置。 我甚至提供了一个非空的ID,尽管从EWS的可用信息来看这似乎不明智。我在这里做错了什么?

回答

1

经过一些试验和错误,我自己想出了答案。而不是

await XClient.Me.Folders.AddFolderAsync(newFolder); 

需要遍历文件夹树以获取父文件夹的ChildFolders集合(可能为空)。例如,通过

await XClient.Me.Folders.GetById(parentId).ChildFolders.AddFolderAsync(newFolder); 

此外,设置newFolder的parentFolderID字段并不重要。

问候, 马丁

PS:最初的尝试是在与程序线过创建新的驱动器子文件夹:

Microsoft.Office365.SharePoint.SharePointClient SpClient; 
    ... 
    await SpClient.Files.AddFolderAsync(folder); 
相关问题