尝试在EWS C#API中查找文件夹的唯一ID

时间:2018-12-27 08:54:24

标签: c# visual-studio-2010 outlook exchangewebservices

我正在尝试在Outlook中找到文件夹的唯一ID。

由于某种原因,我在使用AutoDiscoverUrl方法时始终遇到错误,但是我不知道为什么。在StackOverflow上尝试了所有可能的解决方案。

尝试使用C#在命令行程序中运行它,并注释/记录了代码。我已经使用其他示例来说明如何执行此操作,但这没有用。

 static void Main(string[] args)
    {

        // Set server binding

        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
        service.UseDefaultCredentials = true;

        // Set Credentials
        service.Credentials = new WebCredentials("xxxx", "xxxxx", "xxxx");
        service.UseDefaultCredentials = true;

        service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

        // Set the URL 
        service.AutodiscoverUrl("xxxx", Callback);


        // Error Tracing

        service.TraceEnabled = true;

        // Redirect callback


        // Set View

        FolderView view = new FolderView(100);
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
        view.PropertySet.Add(FolderSchema.DisplayName);
        view.Traversal = FolderTraversal.Deep;
        FindFoldersResults findFolderResults = service.FindFolders(WellKnownFolderName.Root, view);

        // Find specific folder

        foreach (Folder f in findFolderResults)
        {

            // Show FolderId of the folder "test"
            if (f.DisplayName == "test")
                Console.WriteLine(f.Id);
        }

    }

    private static bool Callback(string redirectionUrl)
    {

        bool result = false;

        var redirectionUri = new Uri(redirectionUrl);

        if (redirectionUri.Scheme == "https")

            result = true;
        return result;

    }

}

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码找到文件夹的唯一ID:

   ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
    Service.UseDefaultCredentials = false;
    Service.Credentials = new WebCredentials("yourUserID", "yourPassword");

    Mailbox ProdSupportMailbox = new Mailbox("ProdSupport@company.com");
    Service.AutodiscoverUrl("ProdSupport@company.com");

    FolderView view = new FolderView(100);
            view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
            view.PropertySet.Add(FolderSchema.DisplayName);
            view.Traversal = FolderTraversal.Deep;
            FindFoldersResults findFolderResults = server.FindFolders(WellKnownFolderName.Root, view);
            //find specific folder
            foreach(Folder f in findFolderResults)
            {
                //show folderId of the folder "test"
                if (f.DisplayName == "Test")
                    Console.WriteLine(f.Id);
            }

有关更多信息,请参阅以下链接:

Exchange Web Service FolderId for a not well known folder name

Microsoft Exchange Web Services reading my local Outlook folders INSTEAD of another address