次の方法で共有


統合されたスパム報告アドインを実装する

迷惑メールの数が増加する中、セキュリティはアドインの使用の最前線にあります。 現在、パートナースパムレポートアドインは Outlook リボンに追加されますが、通常はリボンの末尾またはオーバーフロー メニューに表示されます。 これにより、ユーザーがアドインを見つけて迷惑メールを報告することが困難になります。 メッセージが報告されたときにメッセージを処理する方法を構成するだけでなく、開発者は、処理ダイアログや補足情報をユーザーに表示するために、追加のタスクを完了する必要もあります。

統合されたスパムレポート機能により、個々のアドイン コンポーネントをゼロから開発する作業が容易になります。 さらに重要なのは、Outlook リボンの目立つ場所にアドインが表示されるため、ユーザーが見つけやすく、スパム メッセージを報告しやすくなります。 アドインで次の機能を実装します。

  • 一方的なメッセージの追跡方法を改善します。
  • 疑わしいメッセージを報告する方法に関するユーザーに対して、より優れたガイダンスを提供します。
  • organizationのセキュリティ オペレーション センター (SOC) または IT 管理者が、教育目的でスパムとフィッシングのシミュレーションを簡単に実行できるようにします。

注:

統合スパム レポートは、 メールボックス要件セット 1.14 で導入されました。 この機能のクライアント サポートについては、「 サポートされているクライアント」を参照してください。

サポートされるクライアント

次の表は、統合されたスパムレポート機能をサポートする Outlook クライアントを示しています。

クライアント 状態
Outlook on the web サポート
新しい Outlook on Windows サポートされている
Windows 上のクラシック Outlook
バージョン 2404 (ビルド 17530.15000)
サポートされている
Outlook on Mac
バージョン 16.81 (23121700) 以降
プレビュー ( 「Outlook on Mac で統合スパムレポート機能をプレビューする」を参照)
Outlook on Android 使用不可
Outlook on iOS 使用不可

Outlook on Mac で統合されたスパムレポート機能をプレビューする

Outlook on Mac で統合スパムレポート機能をプレビューするには、バージョン 16.81.1217.0 以降をインストールする必要があります。 次に、 Microsoft 365 Insider プログラム に参加し、[ ベータ チャネル ] オプションを選択して Office ベータ ビルドにアクセスします。

環境を設定する

ヒント

完了したスパム レポート アドイン ソリューションをすぐに試すには、「 Outlook でスパムまたはフィッシングメールを報告する 」サンプルを参照してください。

Office アドイン用 Yeoman ジェネレーターを使用してアドイン プロジェクトを作成する Outlook クイック スタートを完了します。

マニフェストを構成する

アドインに統合スパムレポート機能を実装するには、マニフェストで次の機能を構成する必要があります。

  • アドインによって使用されるランタイム。 従来の Outlook on Windows では、スパムレポート アドインは JavaScript 専用ランタイムで実行されます。 Outlook on the webと Mac および新しい Outlook on Windows では、ブラウザー ランタイムでスパムレポート アドインが実行されます。 詳細については、「 Office アドインのランタイム」を参照してください。

  • Outlook リボンの目立つ場所に常に表示されるスパムレポート アドインのボタン。 Windows 上の従来の Outlook クライアントのリボンにスパムレポート アドインのボタンが表示される例を次に示します。 リボン UI は、ユーザーの Outlook クライアントが実行されているプラットフォームによって異なる場合があります。

    スパムレポート アドインのサンプル リボン ボタン。

  • 前処理ダイアログ。 このダイアログは、アドイン ボタンを選択するとユーザーに表示されます。 このダイアログでは、ユーザーが報告しているメッセージに関する追加情報を提供できます。 ユーザーがダイアログから [レポート ] を選択すると、 SpamReporting イベントがアクティブになり、JavaScript イベント ハンドラーによって処理されます。 Outlook on Windows の前処理ダイアログの例を次に示します。 ダイアログの外観は、ユーザーの Outlook クライアントが実行されているプラットフォームによって異なる場合があることに注意してください。

    スパム レポート アドインのサンプル前処理ダイアログ。

使用しているマニフェストの種類のタブを選択します。

注:

Microsoft 365 の統合マニフェストを使用した統合スパム レポートの実装は、パブリック開発者向けプレビュー段階です。 現在、従来の Outlook on Windows でのみ使用できます。 これは、運用環境のアドインでは使用しないでください。テスト環境または開発環境で試してみることをお勧めします。 詳細については、「 パブリック開発者プレビュー アプリ マニフェスト スキーマ」を参照してください。

  1. 任意のコード エディターで、作成したアドイン プロジェクトを開きます。

  2. manifest.json ファイルを開きます。

  3. "extensions.runtimes" 配列に次のオブジェクトを追加します。 このマークアップについて、次の情報にご注意ください。

    • メールボックス要件セットの "minVersion" は "1.14" に構成されています。 これは、統合されたスパムレポート機能をサポートする要件セットの最も低いバージョンです。
    • ランタイムの "id" は、一意のわかりやすい名前 "spam_reporting_runtime" に設定されます。
    • "code" プロパティには、HTML ファイルに設定された子 "page" プロパティと、JavaScript ファイルに設定された子 "script" プロパティがあります。 これらのファイルは、後の手順で作成または編集します。
    • "lifetime" プロパティは "short" に設定されています。 つまり、 SpamReporting イベントが発生するとランタイムが起動し、イベント ハンドラーが完了するとシャットダウンします。
    • "actions" オブジェクトは、ランタイムで実行されるイベント ハンドラー関数を指定します。 この関数は、後の手順で作成します。
    {
        "requirements": {
            "capabilities": [
                {
                    "name": "Mailbox",
                    "minVersion": "1.14"
                }
            ]
        },
        "id": "spam_reporting_runtime",
        "type": "general",
        "code": {
            "page": "https://localhost:3000/commands.html",
            "script": "https://localhost:3000/spamreporting.js"
        },
        "lifetime": "short",
        "actions": [
            {
                "id": "onSpamReport",
                "type": "executeFunction"
            }
        ]
    },
    
  4. "extensions.ribbons" 配列に次のオブジェクトを追加します。 このマークアップについて、次の情報にご注意ください。

    • "contexts" 配列には、"spamReportingOverride" 文字列が含まれています。 これにより、リボンの最後またはオーバーフロー セクションにアドイン ボタンが表示されなくなります。
    • "fixedControls" 配列には、リボンのアドイン ボタンの外観と機能を構成するオブジェクトが含まれています。 "actionId" プロパティで指定されたイベント ハンドラーの名前は、"actions" 配列の オブジェクトの "id" プロパティで使用される値と一致する必要があります。 配列に "enabled" プロパティを指定する必要がある一方で、その値はスパム報告アドインの機能には影響しません。
    • "spamPreProcessingDialog" オブジェクトは、前処理ダイアログに表示される情報とオプションを指定します。 ダイアログには "title" と "description" を指定する必要があります。必要に応じて、次のプロパティを構成できます。
      • "spamReportingOptions" オブジェクト。 これは、最大 5 つの選択肢の複数選択リストを提供します。 これは、ユーザーが報告しているメッセージの種類を識別するのに役立ちます。
      • "spamFreeTextSectionTitle" プロパティ。 ユーザーがレポートしているメッセージに関する詳細情報を追加するためのテキスト ボックスが表示されます。
      • "spamMoreInfo" オブジェクト。 ダイアログには、ユーザーに情報リソースを提供するためのリンクが含まれています。
    {
        "contexts": [
            "spamReportingOverride"
        ],
        "fixedControls": [
            {
                "id": "spamReportingButton",
                "type": "button",
                "label": "Report Spam Message",
                "enabled": false,
                "icons": [
                    {
                        "size": 16,
                        "url": "https://localhost:3000/assets/icon-16.png"
                    },
                    {
                        "size": 32,
                        "url": "https://localhost:3000/assets/icon-32.png"
                    },
                    {
                        "size": 80,
                        "url": "https://localhost:3000/assets/icon-80.png"
                    }
                ],
                "supertip": {
                    "title": "Report Spam Message",
                    "description": "Report an unsolicited message."
                },
                "actionId": "onSpamReport"
            }
        ],
        "spamPreProcessingDialog": {
            "title": "Report Spam Message",
            "description": "Thank you for reporting this message.",
            "spamReportingOptions": {
                "title": "Why are you reporting this email?",
                "options": [
                    "Received spam email.",
                    "Received a phishing email.",
                    "I'm not sure this is a legitimate email."
                ]
            },
            "spamFreeTextSectionTitle": "Provide additional information, if any:",
            "spamMoreInfo": {
                "text": "Reporting unsolicited messages",
                "url": "https://www.contoso.com/spamreporting"
            }
        }
    },
    
  5. 変更内容を保存します。

ヒント

Outlook アドインのマニフェストの詳細については、「 Office アドイン マニフェスト」を参照してください。

イベント ハンドラを実装する

アドインを使用してメッセージを報告すると、 SpamReporting イベントが生成され、アドインの JavaScript ファイル内のイベント ハンドラーによって処理されます。 マニフェストで指定したイベント ハンドラーの名前を、対応する JavaScript にマップするには、コードで Office.actions.associate を呼び出す必要があります。

  1. アドイン プロジェクトで、 ./src ディレクトリに移動します。 次に、 spamreporting という名前の新しいフォルダーを作成します。

  2. ./src/spamreporting フォルダーで、 という名前の新しいファイル spamreporting.js作成します。

  3. 新しく作成した spamreporting.js ファイルを開き、次の JavaScript コードを追加します。

    // Handles the SpamReporting event to process a reported message.
    function onSpamReport(event) {
      // TODO - Send a copy of the reported message.
    
      // TODO - Get the user's responses.
    
      // TODO - Signal that the spam-reporting event has completed processing.
    }
    
    // IMPORTANT: To ensure your add-in is supported in Outlook, remember to map the event handler name specified in the manifest to its JavaScript counterpart.
    Office.actions.associate("onSpamReport", onSpamReport);
    
  4. 変更内容を保存します。

メッセージのコピーを転送し、前処理ダイアログ応答を取得する

イベント ハンドラーは、報告されたメッセージの処理を担当します。 メッセージのコピーや前処理ダイアログでユーザーが選択したオプションなどの情報を内部システムに転送するように構成して、詳細な調査を行うことができます。

報告されたメッセージのコピーを効率的に送信するには、イベント ハンドラーで getAsFileAsync メソッドを呼び出します。 これにより、Base64 でエンコードされたメッセージの EML 形式が取得されます。これにより、内部システムに転送できます。

前処理ダイアログのオプションとテキスト ボックスに対するユーザーの応答を追跡する必要がある場合は、SpamReporting イベント オブジェクトからoptionsfreeTextの値を抽出します。 これらのプロパティの詳細については、「 Office.SpamReportingEventArgs」を参照してください。

getAsFileAsync メソッドを呼び出し、SpamReporting イベント オブジェクトからユーザーの応答を取得するスパム報告イベント ハンドラーの例を次に示します。

  1. spamreporting.js ファイルで、その内容を次のコードに置き換えます。

    // Handles the SpamReporting event to process a reported message.
    function onSpamReport(event) {
      // Get the Base64-encoded EML format of a reported message.
      Office.context.mailbox.item.getAsFileAsync({ asyncContext: event }, (asyncResult) => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
          console.log(`Error encountered during message processing: ${asyncResult.error.message}`);
          return;
        }
    
        // Get the user's responses to the options and text box in the preprocessing dialog.
        const spamReportingEvent = asyncResult.asyncContext;
        const reportedOptions = spamReportingEvent.options;
        const additionalInfo = spamReportingEvent.freeText;
    
        // Run additional processing operations here.
    
        // TODO - Signal that the spam-reporting event has completed processing.
      });
    }
    
    // IMPORTANT: To ensure your add-in is supported in Outlook, remember to map the event handler name specified in the manifest to its JavaScript counterpart.
    Office.actions.associate("onSpamReport", onSpamReport);
    
  2. 変更内容を保存します。

注:

スパム レポート アドインでシングル サインオン (SSO) またはクロスオリジン リソース共有 (CORS) を構成するには、アドインとその JavaScript ファイルを既知の URI に追加する必要があります。 このリソースを構成する方法のガイダンスについては、「 イベント ベースまたはスパムレポートの Outlook アドインでシングル サインオン (SSO) またはクロスオリジン リソース共有 (CORS) を使用する」を参照してください。

イベントが処理されたことを通知する

イベント ハンドラーは、メッセージの処理を完了したら、 event.completed メソッドを呼び出す必要があります。 スパム報告イベントが処理されたことをアドインに通知するだけでなく、 event.completed を使用して、後処理ダイアログをカスタマイズしてユーザーに表示したり、受信トレイからメッセージを削除するなど、メッセージに対して追加の操作を実行したりすることもできます。 event.completed メソッドにパラメーターとして渡す JSON オブジェクトに含めることができるプロパティの一覧については、「Office.SpamReportingEventCompletedOptions」を参照してください。

注:

event.completed呼び出しの後に追加されたコードは、実行が保証されません。

  1. spamreporting.js ファイルで、その内容を次のコードに置き換えます。

    // Handles the SpamReporting event to process a reported message.
    function onSpamReport(event) {
      // Get the Base64-encoded EML format of a reported message.
      Office.context.mailbox.item.getAsFileAsync({ asyncContext: event }, (asyncResult) => {
        if (asyncResult.status === Office.AsyncResultStatus.Failed) {
          console.log(`Error encountered during message processing: ${asyncResult.error.message}`);
          return;
        }
    
        // Get the user's responses to the options and text box in the preprocessing dialog.
        const spamReportingEvent = asyncResult.asyncContext;
        const reportedOptions = spamReportingEvent.options;
        const additionalInfo = spamReportingEvent.freeText;
    
        // Run additional processing operations here.
    
        /**
         * Signals that the spam-reporting event has completed processing.
         * It then moves the reported message to the Junk Email folder of the mailbox, then
         * shows a post-processing dialog to the user. If an error occurs while the message
         * is being processed, the `onErrorDeleteItem` property determines whether the message
         * will be deleted.
         */
        const event = asyncResult.asyncContext;
        event.completed({
          onErrorDeleteItem: true,
          moveItemTo: Office.MailboxEnums.MoveSpamItemTo.JunkFolder,
          showPostProcessingDialog: {
            title: "Contoso Spam Reporting",
            description: "Thank you for reporting this message.",
          },
        });
      });
    }
    
    // IMPORTANT: To ensure your add-in is supported in Outlook, remember to map the event handler name specified in the manifest to its JavaScript counterpart
    Office.actions.associate("onSpamReport", onSpamReport);
    

    注:

    従来の Outlook on Windows バージョン 2308 (ビルド 16724.10000) 以降、Outlook on Mac、Outlook on the web、または新しい Outlook on Windows の場合は、event.completed呼び出しで moveItemTo プロパティを使用して、報告されたメッセージがアドインによって処理されたフォルダーを指定する必要があります。 統合されたスパムレポート機能をサポートする Windows 上の以前の Outlook ビルドでは、 postProcessingAction プロパティを使用する必要があります。

  2. 変更内容を保存します。

次に示すのは、アドインが Outlook on Windows で報告されたメッセージの処理を完了すると、ユーザーに表示される処理後のサンプル ダイアログです。 ダイアログの外観は、ユーザーの Outlook クライアントが実行されているプラットフォームによって異なる場合があることに注意してください。

報告されたスパム メッセージがアドインによって処理された後処理ダイアログのサンプル。

ヒント

Outlook on Windows で実行されるスパムレポート アドインを開発するときは、次の点に注意してください。

  • インポートは、スパムレポート イベントを処理するコードを含む JavaScript ファイルでは現在サポートされていません。
  • Office.onReady()関数とOffice.initialize関数に含まれるコードは実行されません。 代わりに、ユーザーの Outlook バージョンの確認など、アドインのスタートアップ ロジックをイベント ハンドラーに追加する必要があります。

コマンド HTML ファイルを更新する

  1. ./src/commands フォルダーで、 commands.htmlを開きます。

  2. 終了 ヘッド タグ (</head>) の直前に、次の スクリプト エントリを追加します。

    <script type="text/javascript" src="../spamreporting/spamreporting.js"></script>    
    

    注:

    統合されたスパムレポート機能は現在、Outlook on Mac でプレビュー段階です。 このクライアントで機能をテストする場合は、 commands.html ファイルに Office JavaScript API のプレビュー バージョンへの参照を含める必要があります。

    <script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/beta/hosted/office.js"></script>
    <script type="text/javascript" src="../spamreporting/spamreporting.js"></script>
    
  3. 変更内容を保存します。

webpack 構成設定を更新する

  1. アドイン プロジェクトのルート ディレクトリから、 webpack.config.js ファイルを開きます。

  2. config オブジェクト内のplugins配列を見つけて、この新しいオブジェクトを配列の先頭に追加します。

    new CopyWebpackPlugin({
      patterns: [
        {
          from: "./src/spamreporting/spamreporting.js",
          to: "spamreporting.js",
        },
      ],
    }),
    
  3. 変更内容を保存します。

アドインをテストして検証する

  1. サポートされている Outlook クライアントでアドインをサイドロードします。
  2. 受信トレイからメッセージを選択し、リボンからアドインのボタンを選択します。
  3. 前処理ダイアログで、メッセージを報告する理由を選択し、構成されている場合はメッセージに関する情報を追加します。 次に、[ レポート] を選択します。
  4. (省略可能)後処理ダイアログで、[ OK] を選択します

機能の動作と制限事項を確認する

アドインで統合されたスパムレポート機能を開発してテストするときは、その特性と制限事項に留意してください。

  • Outlook on the webと Windows (新規およびクラシック) では、統合されたスパムレポート アドインが Outlook リボンのネイティブレポートボタンに置き換えられます。 複数のスパム レポート アドインがインストールされている場合、それらはすべてリボンの [ レポート ] セクションに表示されます。

    Outlook リボンの [レポート] ボタンを置き換える、サンプルの統合スパムレポート アドイン。

  • スパムレポート アドインは、アクティブ化されると最大 5 分間実行できます。 5 分を超える処理が発生すると、アドインはタイムアウトになります。アドインがタイムアウトすると、ユーザーにこの旨を通知するダイアログが表示されます。

    スパムレポートアドインがタイムアウトしたときに表示されるダイアログ。

  • 従来の Outlook on Windows では、Outlook クライアントの閲覧ウィンドウがオフになっている場合でも、スパムレポート アドインを使用してメッセージを報告できます。 Outlook on the web、Mac の場合、および新しい Outlook on Windows では、閲覧ウィンドウがオンになっているか、報告するメッセージが別のウィンドウで開いている場合に、スパム報告アドインを使用できます。

  • 一度に報告できるメッセージは 1 つだけです。 レポートする複数のメッセージを選択すると、スパムレポート アドインのボタンが使用できなくなります。

  • クラシック Outlook on Windows では、報告されたメッセージを一度に 1 つだけ処理できます。 前のメッセージがまだ処理中にユーザーが別のメッセージを報告しようとすると、そのメッセージを通知するダイアログが表示されます。

    前のメッセージがまだ処理中にユーザーが別のメッセージを報告しようとしたときに表示されるダイアログ。

    これは、Outlook on the webまたは Mac の場合、または新しい Outlook on Windows には適用されません。 これらの Outlook クライアントでは、ユーザーは閲覧ウィンドウからメッセージを報告し、別のウィンドウで開いている各メッセージを同時に報告できます。

  • ユーザーが選択したメッセージから離れた場合でも、アドインは報告されたメッセージを処理できます。 Outlook on Mac では、これは、別のウィンドウで開いている間にユーザーがメッセージを報告する場合にのみサポートされます。 閲覧ウィンドウから閲覧中にユーザーがメッセージを報告し、そのメッセージから離れた場合、レポート プロセスは終了します。

  • 前処理ダイアログと後処理ダイアログに表示されるボタンはカスタマイズできません。 さらに、タイムアウトおよび進行中のレポート ダイアログのテキストとボタンは変更できません。

  • 統合されたスパム レポート機能と イベント ベースのアクティブ化 機能では、同じランタイムを使用する必要があります。 Outlook では、複数のランタイムは現在サポートされていません。 ランタイムの詳細については、「 Office アドインのランタイム」を参照してください。

  • スパム報告アドインは 、関数コマンドのみを実装します。 作業ウィンドウ コマンドをリボンの [スパムレポート] ボタンに割り当てることはできません。 アドインに作業ウィンドウを実装する場合は、マニフェストで次のように構成する必要があります。

    • アドインのみのマニフェスト: マニフェストにAction 要素 を含め、その xsi:type 属性を ShowTaskpaneに設定します。
    • Microsoft 365 の統合マニフェスト: "extensions.runtimes" 配列と "extensions.ribbons" 配列で作業ウィンドウ オブジェクトを構成します。 ガイダンスについては、「 Microsoft 365 の統合マニフェストを使用してアドイン コマンドを作成する」の「作業ウィンドウ コマンドの追加」セクションを参照してください。

    作業ウィンドウをアクティブにする別のボタンはリボンに追加されますが、リボンの専用スパム報告領域には表示されません。

アドインのトラブルシューティング

スパムレポート アドインを開発するときに、アドインが読み込まれていないなどの問題のトラブルシューティングが必要になる場合があります。 スパム レポート アドインのトラブルシューティング方法のガイダンスについては、「 イベント ベースおよびスパム レポート アドインのトラブルシューティング」を参照してください。

関連項目