-1

我有一个代码说没有创建应用程序的即时

当我执行此代码时,此显示输出:此文件“@”C:\Users\Toseef Abbasi\AppData\Local\Microsoft\Outlook" 不是文件<.pst> 的有效 Outlook 个人文件夹 Outlook 无法将个人商店添加到本次会议

using System;

using System.Collections.Generic;

using Microsoft.Office.Interop.Outlook;

namespace PSTReader
{
  class Program
  {

    static void Main()
    {
        try

        {
            IEnumerable<MailItem> mailItems = readPst(@"C:\Users\Toseef Abbasi\AppData

             \Local\Microsoft\Outlook", "Outltoseefabbasi@hotmail.com-0000000b");

            foreach (MailItem mailItem in mailItems)
            {

                Console.WriteLine(mailItem.SenderName + " - " + mailItem.Subject);
            }

        }

        catch (System.Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        Console.ReadLine();
    }

    private static IEnumerable<MailItem> readPst(string pstFilePath, string pstName)
    {
        List<MailItem> mailItems = new List<MailItem>();

        Application app = new Application();

        NameSpace outlookNs = app.GetNamespace("MAPI");

        // Add PST file (Outlook Data File) to Default Profile

        outlookNs.AddStore(pstFilePath);

        MAPIFolder rootFolder = outlookNs.Stores[pstName].GetRootFolder();

        // Traverse through all folders in the PST file

        // TODO: This is not recursive, refactor

        Folders subFolders = rootFolder.Folders;

        foreach (Folder folder in subFolders)
        {
            Items items = folder.Items;

            foreach (object item in items)
            {
                if (item is MailItem)
                {
                    MailItem mailItem = item as MailItem;

                    mailItems.Add(mailItem);
                }
            }
        }
        // Remove PST file from Default Profile

        outlookNs.RemoveStore(rootFolder);

        return mailItems;
    }
}
}
4

1 回答 1

1

在下面的行中,您将其指向一个文件夹而不是实际文件。

IEnumerable<MailItem> mailItems = readPst(@"C:\Users\Toseef Abbasi\AppData

             \Local\Microsoft\Outlook", "Outltoseefabbasi@hotmail.com-0000000b");

应该如下所示,其中 pstname.pst 是实际的 pst 文件。

IEnumerable<MailItem> mailItems = readPst(@"C:\Users\Toseef Abbasi\AppData

             \Local\Microsoft\Outlook\pstname.pst", "Outltoseefabbasi@hotmail.com-0000000b");
于 2013-08-23T15:18:14.270 回答