首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用& C#检查Outlook中是否存在文件夹和子文件夹

如何使用& C#检查Outlook中是否存在文件夹和子文件夹
EN

Stack Overflow用户
提问于 2022-05-26 07:29:27
回答 1查看 325关注 0票数 0

我对C#开发非常陌生。我正在尝试使用Exchange服务检查和创建Outlook邮箱中存在的文件夹/子文件夹。

文件夹结构

  • MAIN_folder
  • 子文件夹-1
  • 子文件夹-2
  • 子文件夹-3

实现

代码语言:javascript
复制
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)

但这只是创建收件箱下的主文件夹。如果有人能帮我找出我在执行过程中缺少的东西,我将不胜感激。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-05-27 13:06:28

你看了Microsoft图一眼吗?

在Microsoft 365中,您基本上可以将它用于任何东西。有了你,你也可以实现你的目标。

您将需要创建一个GraphServiceClient,使用它您可以执行以下操作来检查文件夹是否存在:

代码语言:javascript
复制
string user = "emailAddressOfTheUser";

var parentFolderRequest = graphClient.Users[user].MailFolders.Inbox.ChildFolders
                                                   .Request()
                                                   .Filter($"startsWith(displayName, 'parentFolderName')");

var parentMailFolder = await parentFolderRequest.GetAsync(cancellationToken);

一旦您拥有了父文件夹,您就可以获得它的ID,并且一旦您知道可以搜索它的子文件夹:

代码语言:javascript
复制
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,则创建子文件夹:

代码语言:javascript
复制
var childFolder = new MailFolder
{
   DisplayName = "childFolderName",
   IsHidden = false
};

await graphClient.Users[graphUser.Id]
                 .MailFolders[parentMailFolderID].ChildFolders
                 .Request()
                 .AddAsync(childFolder );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72388276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档