GraphAPIをを使ってメール送信を試してみたところエラーが出てサポートに解決してもらったのメモ。
背景
別のクラウドサービスからAPIでメールを送信したかったで本APIの使用を検討しました。
使用したAPIは下記のとおりです。
参考 API: 新規メールを送信POST https://graph.microsoft.com/v1.0/me/sendMail
Content-type: application/json
{
  "message": {
    "subject": "Meet for lunch?",
    "body": {
      "contentType": "Text",
      "content": "The new cafeteria is open."
    },
    "toRecipients": [
      {
        "emailAddress": {
          "address": "fannyd@contoso.onmicrosoft.com"
        }
      }
    ],
    "ccRecipients": [
      {
        "emailAddress": {
          "address": "danas@contoso.onmicrosoft.com"
        }
      }
    ]
  },
  "saveToSentItems": "false"
}このAPIを呼ぶと、見かけ上はエラーもでず終了するのですが、送信先にメールが届いてませんでした。
使用したアカウントの受信トレイをみると下記のエラーメッセージが。
Remote Server returned '550 5.7.708 Service unavailable. Access denied, traffic not accepted from this IP. For more information please go to http://go.microsoft.com/fwlink/?LinkId=526653 '要するに「アクセスが拒否されました。この IP からのトラフィックは受け入れられません」とのことです。
解決策
サポートに確認したところ下記3点を確認するよう依頼されました。
- 有償版のライセンスが使用されているか
 評価版でも動いていた経験があるので、必須ではないように思いますが、無償版だとサポートを受けられない可能性があります。
- メールの送信に使うドメインは独自のドメインか
 .onmicrosoft.comのドメインを使っていると動かないことがあるようです。独自のドメインを使っていない場合には使用を検討してみてください。
- 別のGlobal IPが送信元となるクライアントから試したか
 送信制限に引っかかっているのか確認するために、別のクライアントで試してみましょう。
今回は有償版で独自ドメインを使用していたので、上2点は問題なかったのですが、別サービスからAPIを呼び出すため3点目は試さず経緯を説明しました。
その上で、Microsoft側で送信制限の解除をいただき、メールの送信APIを呼び出すことが出きました。
私と似たような経緯で今回のエラーにあたった場合は、是非サポートに問い合わせてみてください。

