C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■103909 / 2階層)  c#で outlook 受信トレイ監視が出きなくなった
□投稿者/ 魔界の仮面弁士 (3907回)-(2026/01/16(Fri) 16:19:56)
No103906 (魔界の仮面弁士) に追記
>> Outlookの受信トレイを監視する為の監視アプリをC#で作成しております。

(対応策1) 新しい Outlook へ移行せず、従来版 Outlook を維持して COM 操作を継続する

(対応策2) COM ベースの捜査から、新しい API 操作に切り替える


>>メニューに
>>Outlookの他に
>>Outlook(new)が出現したことも関係するのかもしれません。
> "Outlook (new)" の実体は WebView2 ベースと聞いていますが、
> COM オートメーションをどこまでサポートし続けているかは不明です。

新しい Outlook は Web 技術ベースで設計されているため、
従来の Outlook が提供していた COM Automation(Outlook Object Model)は
新しい Outlook では提供されていません(COM add-ins も非サポート)。

下記でも「Microsoft が新しい Outlook から Outlook Desktop COM API を削除した」とあります。
(新しい Outlook は Web 技術ベースで設計されており、MAPI の追加サポートも計画されていません)
https://docs.uipath.com/ja/activities/other/latest/productivity/new-outlook-impacts-outlook-desktop-activities

new Outlook for Windows の技術情報について、下記を参照してください。
https://learn.microsoft.com/ja-jp/microsoft-365-apps/outlook/overview-new-outlook-windows?WT.mc_id=DT-MVP-8907


以上のように、新しい Outlook は従来の COM/MAPI ベースの拡張を前提としていないため、
今後はクラウド API 主体の開発が必要になってきます。

また、UIAutomation や Selenium を用いる手法を見かけることもありますが、
新しい Outlook の UI は WebView2 内で動的に構築されるため、
要素構造が安定せず、実用的な自動化は困難です。


過去には、"Outlook REST API" という技術もあったのですが、こちらは
v1.0 が 2019年11月に、v2.0 が 2024年3月にそれぞれ廃止されており、
現在は "Microsoft Graph API" が利用されます。

・MAPI → それ自体に変更は無いが、クラウド版からは利用不可
・Outlook REST API v1.0 → 廃止(2019/11)
・Outlook REST API v2.0 → 廃止(2024/3)
・Exchange Web Services → 非推奨
・Azure AD Graph API → 廃止(2025/6)
・Microsoft Graph API → すべての新機能の中心



>> OutookNameSpace = (Outlook._NameSpace)OutlookApp.GetNamespace("MAPI");  <=ここで以下のエラーが出ます。
現在のところ、新しい Outlook は MAPI をサポートしていないようです。

https://support.microsoft.com/ja-jp/office/a3f77cbb-2476-4d09-b051-f38a4afe9e23?WT.mc_id=DT-MVP-8907
「この問題は、新しい Outlook が現在 MAPI 統合をサポートしていないために発生します。」
「新しい Outlook が MAPI 統合のサポートを追加するまでは、MAPI アプリケーションから送信される電子メールを管理するために、従来の Outlook をインストールして構成できます。」


Exchange Online についてみてみると、
 ・MAPI over HTTP は内部実装としては残されているが、外部 API としては推奨されない
 ・新しい Outlook は Graph API を前提に設計
という流れになっています。

先に述べた通り、新しい Outlook ではクラウド API(Microsoft Graph)を中心に設計されているため、
COM を用いた MAPI ベースの監視プログラムではなく、Microsoft Graph API ベースの監視が要求されます。

Microsoft Graph API による監視方法としては、
 ・Delta Query(差分取得)
 ・Webhook(通知サブスクリプション)
があります。

Delta Query は「定期的に差分を取りに行くポーリング方式」で、
Webhook は「サーバー側から通知を受け取るプッシュ通知方式」です。

Webhook の場合は、受信用のエンドポイントの準備(証明書やドメインなど)が必要で
実装コストが高いため、今回の要件なら Delta Query の方が良いかもしれません。

Microsoft Graph API は OAuth 2.0 (Azure AD) / OpenID Connect による認証が必須のため、
どのアプリがどのメールボックスにアクセスするかを Azure AD に登録して
 ・クライアント ID
 ・テナント ID
 ・シークレットまたは認証フロー
を準備しておく必要があります。

C# で実装する場合は "Microsoft.Graph" (と "Microsoft.Identity.Client") を NuGet します。
PowerShell で接続する場合は Microsoft Graph PowerShell SDK を用います。


Learn > Microsoft Graph > Outlook メール API の概要
https://learn.microsoft.com/ja-jp/graph/outlook-mail-concept-overview?WT.mc_id=DT-MVP-8907

Microsoft 365 > Microsoft Graph > Changelog
https://developer.microsoft.com/en-us/graph/changelog?WT.mc_id=DT-MVP-8907

note > なぜMicrosoft Graphは沼なのか
https://note.com/japan_d2/n/n0c6b1ba5a849
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[1]: c#で outlook 受信トレイ監視が出きなくなった /魔界の仮面弁士 返信無し
 
上記関連ツリー

c#で outlook 受信トレイ監視が出きなくなった / いとこんにゃく (25/09/08(Mon) 10:56) #103858
Re[1]: c#で outlook 受信トレイ監視が出きなくなった / ゆーち (26/01/13(Tue) 12:34) #103901
Re[1]: c#で outlook 受信トレイ監視が出きなくなった / とくま (26/01/13(Tue) 14:02) #103902
│└ Re[2]: c#で outlook 受信トレイ監視が出きなくなった / とくま (26/01/15(Thu) 17:19) #103908
Re[1]: c#で outlook 受信トレイ監視が出きなくなった / 魔界の仮面弁士 (26/01/14(Wed) 09:02) #103906
  └ c#で outlook 受信トレイ監視が出きなくなった / 魔界の仮面弁士 (26/01/16(Fri) 16:19) #103909 ←Now

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信