[英]How do I check if folder and sub folder exist in Outlook using EWS Web Service & C#
我對 C# 開發非常陌生。 我正在嘗試使用 Exchange Web 服務檢查並創建 Outlook 郵箱中存在的文件夾/子文件夾。
文件夾結構
執行
public void checkFolderExistOrNot( String folder_name)
{
FolderView fv = new FolderView(100);
var findFoldersResults = exchangeService.FindFolders(
WellKnownFolderName.Inbox,
new SearchFilter.SearchFilterCollection(
LogicalOperator.Or,
new SearchFilter.ContainsSubstring(FolderSchema.DisplayName, folder_name)),
fv);
foreach (var folder in findFoldersResults)
{
if (folder is Folder)
{
if (folder.DisplayName == folder_name)
{
archiveFolderID = folder.Id;
}
}
}
//if archive folder not found create and assign the variable to the folderID
if (archiveFolderID == null)
{
Folder folder = new Folder(exchangeService);
folder.DisplayName = folder_name;
folder.Save(WellKnownFolderName.Inbox);
archiveFolderID = folder.Id;
}
}
checkFolderExistOrNot(MAIN_folder)
checkFolderExistOrNot(MAIN_folder.Sub Folder-1)
checkFolderExistOrNot(MAIN_folder.Sub Folder-2)
checkFolderExistOrNot(MAIN_folder.Sub Folder-3)
但這只是在收件箱下創建主文件夾。 如果有人可以幫助我確定我的實施中缺少什么,將不勝感激。
提前致謝。
判斷一個文件夾是否存在的唯一方法是用你的搜索來搜索它,因為你沒有在 Folderview 中指定遍歷它總是很淺。 如果您在
FolderView fv = new FolderView(100);
fv.Traversal = FolderTraversal.Deep;
然后,您應該能夠找到要在其上創建新子文件夾的父文件夾。 只要您沒有任何名稱與不同的文件夾級別發生沖突,您的邏輯就應該可以正常工作。 否則我所做的是用戶創建的文件夾的此 Exchange Web Service FolderId或使用 EWS 通過路徑獲取 Exchange 文件夾
你看過Microsoft Graph嗎?
你基本上可以將它用於 Microsoft 365 中的任何內容。有了你,你也可以實現你的目標。
您將需要創建一個GraphServiceClient
並使用它您可以執行以下操作來檢查文件夾是否存在:
string user = "emailAddressOfTheUser";
var parentFolderRequest = graphClient.Users[user].MailFolders.Inbox.ChildFolders
.Request()
.Filter($"startsWith(displayName, 'parentFolderName')");
var parentMailFolder = await parentFolderRequest.GetAsync(cancellationToken);
一旦你有了父文件夾,你就可以得到它的 ID,一旦你知道你可以搜索它的子文件夾:
var parentMailFolderID = parentMailFolder.First().Id;
var childFolderRequest = graphClient.Users[user].MailFolders[parentMailFolderID].ChildFolders
.Request()
.Filter($"startsWith(displayName, 'childFolderName')");
var childMailFolder = await parentFolderRequest.GetAsync(cancellationToken);
如果childMailFolder.Count > 0
則該文件夾存在,如果不存在則創建子文件夾:
var childFolder = new MailFolder
{
DisplayName = "childFolderName",
IsHidden = false
};
await graphClient.Users[graphUser.Id]
.MailFolders[parentMailFolderID].ChildFolders
.Request()
.AddAsync(childFolder );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.