【问题标题】:C# Outlook Shared Mailbox get subfolders intermittentC# Outlook 共享邮箱间歇性地获取子文件夹
【发布时间】:2017-06-05 12:52:22
【问题描述】:

我正在尝试在 Outlook 中获取共享邮箱中的文件夹和子文件夹列表。使用缓存 Exchange 模式和下载共享文件夹都被选中。 文件夹最多 3 个级别: Inbox=>Company=>ABC Company 。下面是我的代码。

myApp = new Microsoft.Office.Interop.Outlook.Application();

            ns = myApp.Session;
            stores = ns.Stores;

            for (int i = 1; i <= stores.Count; i++)
            {
                var _store = stores[i];
                if (_store.DisplayName.ToLower().Contains(displayName.ToLower()))
                {
                    store = _store;
                    break;
                }
            }

            rootFolder = store.GetRootFolder();
            folders = rootFolder.Folders;

            for (int i = 1; i < folders.Count; i++)
            {
                mainfolder = (Microsoft.Office.Interop.Outlook.MAPIFolder)folders[i];

                if (mainfolder != null)
                {
                    if (mainfolder.Name.Trim().ToLower() == mainfolderName.Trim().ToLower())
                    {
                        foreach (Microsoft.Office.Interop.Outlook.MAPIFolder f in mainfolder.Folders)
                        {
                            if (f.Name.Trim().ToLower() == folderName.Trim().ToLower())
                            {
                                folder = f;
                                if (subFolderName != "")
                                {
                                    foreach (Microsoft.Office.Interop.Outlook.MAPIFolder sub in f.Folders)
                                    {
                                        if (sub.Name.Trim().ToLower() == subFolderName.Trim().ToLower())
                                        {
                                            subfolder = sub;
                                            break;
                                        }
                                    }
                                }
                                break;
                            }
                        }
                        break;
                    }
                }

            }

它成功获得第一级 - 收件箱、草稿、存档、垃圾邮件等。但它并不总是获得第二级,mainfolder.Folders.Count 返回 0。我错过了什么吗?谢谢。

【问题讨论】:

  • 您真的能在 Outlook 中看到这些文件夹吗?您是否尝试过禁用缓存模式?
  • 是的,我可以在 Outlook 中看到这些文件夹。禁用缓存模式会使 Outlook 有时没有响应,而且根据我们的 IT 团队也不可能。我不明白为什么有时它工作,有时不工作。和网络有关系吗?

标签: c# outlook interop shared


【解决方案1】:

我通过在获取邮箱中的文件夹之前 ping 电子邮件服务器找到了解决方案。这是我到目前为止找到的解决方案,现在一个星期,至少它在我的情况下有效。谢谢。

【讨论】:

  • 我面临着完全相同的问题。您能否发布您的解决方案的代码 sn-p ?谢谢...
  • using System.Net.NetworkInformation; var ping = new Ping(); var reply = ping.Send("mail.server", 3000); if (reply.Status == IPStatus.Success) { } else { }
  • 不幸的是,这并不能解决我的问题。我正在尝试访问共享收件箱的收件箱的子文件夹。大小为 0,但是当我尝试创建一个已经存在的文件夹时,会引发异常。 var i = parentFolder.Folders.OfType&lt;Folder&gt;().Any(f =&gt; f.Name == "Test"); // returns always false。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-20
  • 2016-09-28
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
相关资源
最近更新 更多