问题描述
我一直在尝试从以下提供的响应中获取发件人 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>)...,"
}
]
}
现在,您只需要一个正则表达式来提取 -
- 获取
Authentication-Results
中存在的值 - 使用正则表达式 -
\d{1,3}\.\d{1,3}
提取 IP,使用与正则表达式匹配的第一次出现。