如何使用 Microsoft Graph API 获取发件人 IP?

How to get Sender IP using Microsoft Graph API?

我一直在尝试从以下提供的响应中获取发件人 IP :-

GET https://graph.microsoft.com/v1.0/me/messages/AAMkADhAAAW-VPeAAA=/?$select=internetMessageHeaders.

我得到的响应有多个 Receiver 标签,如下所示:-

{
    "@odata.context":"<some-value>",
    "@odata.etag":"<some-value>",
    "id":"<some-value>",
    "internetMessageHeaders":[
        {
            "name":"MIME-Version",
            "value":"1.0"
        },
        {
            "name":"Content-Type",
            "value":"multipart/report"
        },
        {
            "name":"x-custom-header-group-name",
            "value":"Washington"
        },
        {
            "name":"x-custom-header-group-id",
            "value":"WA001"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },

    ]
}

如何使用 Graph API 获取邮件的实际来源发件人 IP?

除了上述方法之外,还有其他方法可以使用 Graph API 获取发件人 IP 吗?

Graph API 响应看起来类似于以下内容,Authentication-Results 为我提供了相关的原始发件人 IP -

{
    "@odata.context":"<some-value>",
    "@odata.etag":"<some-value>",
    "id":"<some-value>",
    "internetMessageHeaders":[
        {
            "name":"MIME-Version",
            "value":"1.0"
        },
        {
            "name":"Content-Type",
            "value":"multipart/report"
        },
        {
            "name":"x-custom-header-group-name",
            "value":"Washington"
        },
        {
            "name":"x-custom-header-group-id",
            "value":"WA001"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },
        {
            "name":"Receiver",
            "value":"<some-ip>"
        },
        {
            "name":"Authentication-Results",
            "value":"spf=pass (sender ip is <some-ip>)...,"       
        }
    ]
}

现在,您只需要一个要提取的正则表达式 -

  1. 获取 Authentication-Results
  2. 中的值
  3. 使用正则表达式 - \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 提取 IP,使用与正则表达式匹配的第一个匹配项。