我正在构建一个电子邮件应用程序(一个几乎完全通过电子邮件与您交互的网络应用程序),我希望能够合理地猜测我的用户只使用他们的电子邮件标题。 (我坚信网络服务中的'默认'应该尽可能聪明!)
对现代电子邮件路由具有良好知识的人(例如谷歌,雅虎等超级提供商)是否有任何好的想法,如何从电子邮件中提取用户的国家,并且如果可能的话,这是多么准确的粗略指示,所以如果它不可能是正确的,我可以忽略猜测?
到目前为止的想法:
感谢您的头脑周期!
答案 0 :(得分:2)
我曾经写过一个thunderbird plugin做同样的事情,它只使用顶级域来显示每条路线的电台。从中吸取的教训是,邮件可能会超过10台或更多服务器,直到它到达收件人。您必须使用第一个路径条目:
Received: by mail.cweiske.de (Postfix, from userid 65534)
id 1DB83119102DA; Sat, 30 Jul 2011 13:58:30 +0200 (CEST)
Received: from fmmailgate02.web.de (fmmailgate02.web.de [217.72.192.227])
by mail.cweiske.de (Postfix) with ESMTP id D56F6119102D3
for <me@example.orge>; Sat, 30 Jul 2011 13:58:18 +0200 (CEST)
Received: from smtp03.web.de ( [172.20.0.65])
by fmmailgate02.web.de (Postfix) with ESMTP id E54B11A74B6A1
for <me@example.org>; Sat, 30 Jul 2011 13:57:52 +0200 (CEST)
Received: from [84.185.130.22] (helo=[192.168.178.21])
by smtp03.web.de with asmtp (WEB.DE 4.110 #2)
id 1Qn88O-0006jw-00
for me@example.org; Sat, 30 Jul 2011 13:55:14 +0200
在这种情况下,发件人是84.185.130.22 - 该IP上的whois给我们(正确)德国作为邮件来源。
另一个例子,仅限第一个条目:
Received: from carnot.localnet (ip-118-90-104-106.xdsl.xnet.co.nz
[118.90.104.106])
by ananke.wxnz.net (Postfix) with ESMTP id D758D17002B
for <me@lists.sourceforge.net>;
Sun, 31 Jul 2011 10:08:57 +1200 (NZST)
甚至包含.nz
作为已解析的主机名 - 这次正确新西兰。 whois也给你新西兰。
你必须检查来自gmail web界面的邮件是否也包含正确的IP,我怀疑。来自gmail的一个例子:
Received: from mail-wy0-f179.google.com (mail-wy0-f179.google.com [74.125.82.179])
by mail.cweiske.de (Postfix) with ESMTP id A739A11910543
for <me@example.org>; Wed, 23 Jun 2010 23:05:42 +0200 (CEST)
Received: by wyb38 with SMTP id 38so1740851wyb.24
for <me@example.org>; Wed, 23 Jun 2010 14:05:42 -0700 (PDT)
此处完全缺少发件人IP,您获得的唯一信息是来自Google邮件服务器的IP。时区也是服务器的区域,而不是客户端的时区 - 它将是+02:00。
最后,没有信号可以提供100%的准确性,您必须使用所有信号。 此外,电子邮件中的每一位都可能是伪造的 - 不要忘记。
答案 1 :(得分:2)
另一种方法是向他们发送一封确认/验证电子邮件,其中包含一个HTML图像,该图像使用特殊标识符从远程服务器加载。如果用户启用了HTML邮件,那么他们将下载图像,从而将适当的信息(例如他们的IP)发送到您的服务器,以便您进行地理查找。
或者,如果您的服务器无法正确确定其来源国,您可以要求他们点击辅助服务器中的确认链接。