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

问题描述

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

var formBody = FormBodyPublisher.newBuilder() .query("a","get_account") .query("account",account) .build(); var request = MutableRequest.POST("https://example.com",formBody); // Methanol implements an HttpClient that does nice things to your request/response. // Here,the Content-Type header will be added for you. var client = Methanol.create(); var response = client.send(request,BodyHandlers.ofString());

我得到的响应有多个 GET https://graph.microsoft.com/v1.0/me/messages/AAMkADhAAAW-VPeAAA=/?$select=internetMessageHeaders 标签,如下所示:-

Receiver

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

除了上面提到的方法之外,还有其他使用Graph API获取Sender 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":"Authentication-Results","value":"spf=pass (sender ip is <some-ip>)...,"       
        }
    ]
}

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

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