1

.NETでそれが可能かどうか興味があります。小さな C# Windows GUI アプリを作成しましたが、Microsoft Outlook 2010 に「アクセス」して、新しい (未開封の) メールが存在するかどうかを確認する方法があるかどうか疑問に思っていました。通常、このような状態は、システム トレイに封筒のアイコンが表示されることで示されます。

ここに画像の説明を入力

4

1 に答える 1

1

お役に立てれば...

以下は、.NET を使用して Outlook フォルダー (受信トレイ フォルダーの下の「MySubFolderName」と呼ばれる) 内のアイテムからデータを取得する方法を示しています。

まず、プロジェクトの Outlook COM オブジェクトへの参照を追加します。

VS.NET で [参照] を右クリックし、[参照の追加] を選択します。[COM] タブを選択します。 [Microsoft Outlook 11.0 Object Library] (これは MS Office 2003 用です。10.0 は Office XP 用だと思います) を選択し、[選択] をクリックします。[OK] をクリックします。予定、メモ、タスク、電子メールなど、任意の Outlook/Exchange オブジェクト タイプにアクセスできることに注意してください。インテリセンスを使用してどれを選択するかだけです (例: Microsoft.Office.Interop.Outlook. ... - 'item という変数の定義を参照)。 ' 下)。

コードは次のとおりです。

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(null,null,false, false);

    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) 
{
    Console.WriteLine(ex.ToString());
}
finally
{
    ns = null;
    app = null;
    inboxFolder = null;
}

ソース @ http://geekswithblogs.net/TimH/archive/2006/05/26/79720.aspx .

また、チェックしてください:

http://msdn.microsoft.com/en-us/library/bb610835(v=office.14).aspx

于 2013-05-29T23:49:02.647 に答える