收件人打开电子邮件时获取IP地址和电子邮件ID

时间:2013-09-05 09:43:18

标签: php

我正在使用php mail()函数。但我希望当接收者打开电子邮件时,他/她的IP地址和电子邮件ID将保存在我的数据库表中。

我的邮件功能代码是 -

<?php
require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();

// ---------- adjust these lines ---------------------------------------
$mail->Username = "mymail@gmail.com"; // your GMail user name
$mail->Password = ""; 
$mail->AddAddress("$userid"); // recipients email
$mail->FromName = "Nikhil Garg"; // readable name

$mail->Subject = "Newletter Subscription";
$mail->Body    = "$usermsg"; 
//-----------------------------------------------------------------------

$mail->SMTPSecure = "ssl";  
$mail->Host='smtp.gmail.com';
$mail->Port = 465;
$mail->IsSMTP(); // use SMTP
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->CharSet = 'utf-8';  
$mail->SMTPDebug  = 0;
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->From = $mail->Username;
if(!$mail->Send())
    echo "Mailer Error: " . $mail->ErrorInfo;
else
    echo "Message has been sent";
 }
 ?>

他们运作良好。但我不明白如何在打开此电子邮件时获取接收方IP地址和电子邮件ID。

实际上我有超过5000个电子邮件列表,我想按城市,州,国家对它们进行排序。有了ip地址,我可以做到。如果你知道其他任何方式,请建议

我的目标很简单,真实。我只是想了解他们的国家,以便我会根据他们的国家场合发送电子邮件以获得更好的销售结果。向超过5000个用户发送电子邮件并询问他们的详细信息是不正确的。

7 个答案:

答案 0 :(得分:3)

  1. 将电子邮件设为HTML格式
  2. 在服务器中包含对图像的引用
  3. 为该图片的查询字符串添加唯一标识符
  4. 让您的服务器记录时间,查询字符串ID,并请求源ip以获取请求
  5. 请注意:

    • 您必须熟悉您将要与之互动的相关隐私法律(注意您几乎肯定会在国际上开展业务)
    • 如果用户未在电子邮件中加载图片,则无效(大多数电子邮件客户端默认不加载图片,因此这种跟踪不会成功)
    • 添加此类跟踪ID会使您的电子邮件在某些垃圾邮件过滤器中对垃圾邮件进行加权
    • 您的一些客户会因此而感到不安/冒犯
    • 如果有人转发电子邮件,您将从多个人那里获得相同的ID

答案 1 :(得分:2)

您正在寻找的是一个网络信标,只要您提供一个链接回到您的隐私政策以及您必须指定的隐私政策,就可以使用它。

工作原理 基本上,1x1图像放在电子邮件中,从服务器请求您可以获取IP地址..

<强>缺点 许多邮件客户端不会自动加载图像,因此无法为您提供准确的统计信息

*

在您的邮件中放置图片: <img src="http://example.com/file.php" />

在file.php中:

//get ip address

//43byte 1x1 transparent pixel gif 
echo base64_decode("R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); 

答案 2 :(得分:1)

我做到了这一点,它的确有效!问题是gmail从他们自己的服务器加载信息,因此,每次用户打开电子邮件时,记录的IP都来自Gmail服务器,因此它显示的是Google IP地址而不是收件人IP,因此可以使用链接跟踪,当收件人单击链接并打开新选项卡时,您可以捕获正确的IP

答案 3 :(得分:0)

您无法使用普通邮件。

您发送消息(文本),并且无法控制用户之后执行的操作。现在我不知道mail id是什么,但有几个技巧来获取用户的IP,我很同意上述用户认为它不是很好。

  • 您可以将mailcontent放在您的服务器上。如果用户信任/愚蠢到足以点击,您可以打开一个链接(带有ID)并从加载的网页获取信息
  • 你可以添加图片,是用户加载那些(不是默认的!)你得到一些信息

等。但是对于发送这样的普通邮件:没有机会。

答案 4 :(得分:0)

同意@Daniel认为这样做可能不合法。

但是,如果我认为您的意图是无害的,我建议对图像使用散列URL,每个发送的电子邮件都是唯一的。此URL指向与DB中的文件匹配的PHP文件,并在加载图像后将电子邮件实例标记为已发送和读取。

当然,读者必须已接受从您的电子邮件中加载图像。否则,它将无法工作。

祝你好运

答案 5 :(得分:0)

说实话,我认为这根本不可能。

在某些电子邮件客户端中内置了一个“阅读回执”系统,可以在打开电子邮件时向发件人发送自动通知,但这是可选的 - 收件人可能已将其禁用,或者可能正在使用电子邮件软件支持它。

但无论如何,这不包括通知中用户的IP地址。

如果您发送HTML邮件,则可以在邮件中包含嵌入图形,该图形将从您的服务器加载。但是出于安全原因,大多数电子邮件客户端会阻止外部图形(即准确地避免与未知发件人共享其IP地址和其他详细信息)。

您无法使用Javascript,因为出于安全原因,它也无法在电子邮件中使用。

无论您做什么,都完全取决于收件人电子邮件系统的功能及其设置。你无法控制它,大多数用户的设置可能会阻止你尝试做的任何事情。

简而言之,你不会得到你想要的东西。

简单回答:只需向用户询问您需要的信息,而不是试图从中窃取信息。也许您应该将乡镇和国家/地区字段作为用户填写的表单的一部分,以便注册您的邮件列表。

答案 6 :(得分:-1)

我们可以在c面板中托管跟踪代码,并生成一个图像链接。只要将图片加载到电子邮件正文中,它就会触发代码,我们可以在csv文件中收集电子邮件ID,IP地址和时间。