Microsoft Graph で @メンション付きのメールを送信する

この記事では、執筆時点で beta バージョンでのみ利用可能な機能を紹介しています。本番環境での利用はサポートされませんので注意してください。また、公開情報にない利用方法を紹介しています。ご利用は自己責任でお願いします。

Microsoft Graph では beta バージョンで @メンションを扱うことができます。@メンションを使用することで、Outlook や Outlook on the web での @メンションと同じようなメールを送信することができます。

/sendMail を使用してメールを送信する場合、以下のようなリクエストを送信することで @メンション付きのメールが送信できます。

POST https://graph.microsoft.com/beta/me/sendMail
{
  "Message": {
    "subject": "件名",
    "body": {
      "contentType": "html",
      "content": "<html><body><a id=\"OWAAM で始まる一意な文字列\" href=\"mailto:メンション先ユーザーのメール アドレス\">@メンション時に表示されるテキスト</a></body></html>"
    },
    "toRecipients":[
      {
          "emailAddress":{
              "address":"宛先のメール アドレス"
          }
      }
    ],
    "mentions":[
      {
        "mentioned":{
          "address":"メンション先のユーザーのメール アドレス"
         }
      }
    ]
  }
}

実際のリクエストとしては以下のようになります。

{
  "Message": {
    "subject": "Test",
    "body": {
      "contentType": "html",
      "content": "<html><body><a id=\"OWAAM1\" href=\"mailto:user01@contoso.com\">@User01</a></body></html>"
    },
    "toRecipients":[
      {
          "emailAddress":{
              "address":"user01@contoso.com"
          }
      }
    ],
    "mentions":[
      {
        "mentioned":{
          "address":"user01@contoso.com"
         }
      }
    ]
  }
}

受信したメールは以下のように表示されます。

なお body を特に指定しなくても mentions の指定をすれば、Ootw などで「メンションされているメール」と認識はされます。ただし mentions だけを指定しても「メンションされているメール」になるだけで、メール本文には @メンションが含まれていない状態になります。

逆に body に a タグで id が OWAAM で始まるものを指定し、href に mailto で始まるものを指定しておけば、「メンション風」な見た目で Ootw などに表示されます。ただし a タグの指定だけをしても「メンション風」な見た目で表示されるだけで、内部的に「メンションされているメール」とはなりません。

つまり mentions と a タグを両方指定して、はじめて Ootw などで @メンション付きメールを送信したときと同じようなメールを送信できます。

なお a タグの内容と指定するテキストは「@ユーザー名」である必要はありません。
そのため、例えば「@User01 さん見てー!」と指定すれば、以下のような @メンション付きのメールを送信することができます。