从IMAP邮箱中的电子邮件中获取IP

时间:2010-12-24 22:12:57

标签: php email geolocation ip-address

您好  我正在寻找一个独立的脚本来登录电子邮件帐户[IMAP],获取每封电子邮件的标题,找到&存储每个(发件人或服务器)的IP地址。我认识到这必须要有点全面,以涵盖前三大网络邮件提供商(雅虎,谷歌和Hotmail)以及其他常见的标题格式。

理想情况下,我想获取发件人的IP地址,但会满足服务器的IP地址。

我需要在常规LAMP设置中在PHP中执行此操作。

任何想法都会有所帮助。谢谢。

4 个答案:

答案 0 :(得分:4)

系统转发的服务器的详细信息按反向时间顺序显示在电子邮件标题的顶部 - 最新的位于顶部,第一个服务器位于底部。

快速,袖手旁观的解决方案是使用RegExp尝试找到包含IP地址的底部“已接收:...”。

非常快速的测试表明:

$regExp = '/Received:.*((?:\d+\.){3}\d+)/';

将匹配这些行,并返回IP地址。

然后你只需使用preg_match_all()之类的东西来返回匹配行的数组,并使用该批次的最后一行。

答案 1 :(得分:1)

IP是邮寄服务器的IP,而不是发件人IP。您想要服务器IP或发件人IP吗?

答案 2 :(得分:1)

连接后,获取消息列表,现在正在预告消息:

$header=imap_fetchheader($imap,$msgn);
$regex='/client\-ip\=(.+?)\;/s';
preg_match_all($regex,$header,$matches);
$clientip=echo($matches[1]);

对我来说,这对我来说很轻松。

答案 3 :(得分:0)

我知道这篇文章已经过时了,但上面选择的答案确实获得了IP,但它并不一定能获得正确的发送服务器IP地址。下面是我用来获取实际发送服务器IP的正则表达式:

/^Received:\sfrom(.*)[\[\(]\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})[\]\)]/im