-1

アプリケーションのインスタントが作成されていないというコードがあります

このコードを実行すると、次の出力が表示されます: このファイル "@"C:\Users\Toseef Abbasi\AppData \Local\Microsoft\Outlook" is not a valid Outlook personal folder for file<.pst> Outlook failed to add personal store toこのセッション

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 に答える