2

私は VS2010、C#、ASP.NET を使用して Outlook メールを読んでいます。私のGmail(IMAP)でOutlook Express 6をセットアップしました.COMオブジェクトが作成されている最初の行で奇妙な例外が発生しました.ここに私のコードがあります:

Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.PostItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;

try
{
    app = new Microsoft.Office.Interop.Outlook.Application();
    ns = app.GetNamespace("MAPI");
    ns.Logon("gmail_id", "gmail_pass", false, true);

    inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
    subFolder = inboxFolder.Folders["MySubFolderName"]; //folder.Folders[1]; also works
    Console.WriteLine("Folder Name: {0}, EntryId: {1}", subFolder.Name, subFolder.EntryID);
    Console.WriteLine("Num Items: {0}", subFolder.Items.Count.ToString());

    for (int i = 1; i <= subFolder.Items.Count; i++)
    {
        item = (Microsoft.Office.Interop.Outlook.PostItem)subFolder.Items[i];
        Console.WriteLine("Item: {0}", i.ToString());
        Console.WriteLine("Subject: {0}", item.Subject);
        Console.WriteLine("Sent: {0} {1}", item.SentOn.ToLongDateString(), item.SentOn.ToLongTimeString());
        Console.WriteLine("Categories: {0}", item.Categories);
        Console.WriteLine("Body: {0}", item.Body);
        Console.WriteLine("HTMLBody: {0}", item.HTMLBody);
    }
}
catch (System.Runtime.InteropServices.COMException ex)
{

}
finally
{
    ns = null;
    app = null;
    inboxFolder = null;
}

それは私の例外です:

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

この例外は、最初の行で作成されます。

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

相互運用参照としてファイルを使用しましMicrosoft.Office.Interop.Outlook.dllたが、ここで何が問題になっていますか? Outlook Express 6 では Gmail の受信トレイを読むことができますが、ASP.NET Web アプリではうまくいきません。

4

2 に答える 2

2

Office アプリが ASP.NET で実行されるように、適切な COM アクティベーション アクセス許可を構成してみてください。

于 2012-06-14T13:41:12.787 に答える
0

まず、サービス (IIS など) で Office アプリ (Outlook を含む) を使用しないでください。例外はありません。単にサポートされていません。第 2 に、(サービスではなく) Outlook オブジェクト モデルを使用している場合は、Outlook (実際のモデル) をインストールする必要があります。OE と Outlook 2010/2007/2003 などとの共通点はありませんが、名前に「Outlook」という単語が含まれています。

于 2012-06-14T17:58:16.443 に答える