首先从TidMessage中获得邮件的头信息:
strHeader:=aIdMessage.Headers.text;
然后,用正则表达式取出Received:
vReceiveIP:=GetNeedStrByPerlReg(strHeader,'(Received:)(.+)(])');
再取出X-Originating-IP:
vOriIP:=GetNeedStrByPerlReg(strHeader,'(X-Originating-IP:)(.+)(])');
再取出方括号[]中的IP地址,这样就会获得两个IP,根据这两个IP查询IP地址数据库可以判断出邮件的来源。
注意,并不是所有邮件都会有这两个信息,并且有时这两个IP信息也可能是假的,关于具体的判断是比较复杂的,这里只是一个简单的办法,并且得出的结果仅供参考。
具体邮件来源的判断,请参考引用的一篇文章:
http://garfieldtom.spaces.live.com/blog/cns!7FAB2A2238E574BC!431.entry