-5

我正在使用 phpmail()函数。但我希望当接收者打开电子邮件时,他/她的 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 个用户发送电子邮件并询问他们的详细信息是不正确的方法。

4

7 回答 7

6
  1. 将电子邮件 HTML 格式化
  2. 在其中包含对服务器上图像的引用
  3. 向该图像的查询字符串添加唯一标识符
  4. 让您的服务器记录对它的请求的时间、查询字符串 id 和请求源 ip

注意:

  • 您必须通过这样做熟悉您将与之互动的相关隐私法(注意您几乎肯定会在国际上开展业务)
  • 如果用户不加载电子邮件中的图像,这将不起作用(并且大多数电子邮件客户端默认不加载图像,因此这种跟踪不会成功)
  • 添加此类跟踪 ID 会使您的电子邮件在某些垃圾邮件过滤器中偏重于垃圾邮件
  • 你的一些客户会因为你这样做而感到不安/冒犯
  • 如果有人转发电子邮件,您将从多个人那里获得相同的 id
于 2013-09-05T09:48:44.213 回答
3

您正在寻找的东西称为网络信标,您可以使用它,只要您提供指向您的隐私政策的链接,并且在您的隐私政策中您必须指定它。

它是如何工作 的 基本上,在电子邮件中放置一个 1x1 图像,这是从您的服务器请求的,您可以在其中获取 IP 地址。

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

*代码

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

在文件.php 中:

//get ip address

//43byte 1x1 transparent pixel gif 
echo base64_decode("R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="); 
于 2013-09-05T09:56:14.023 回答
2

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

于 2017-02-02T16:42:12.740 回答
0

你不能用普通邮件。

您将消息(文本)发送出去,并且无法控制用户之后的操作。现在我不知道 amail id是什么,但是有几个技巧可以获取用户的 IP,我同意上述用户的观点,这不是很好。

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

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

于 2013-09-05T09:49:03.043 回答
0

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

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

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

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

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

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

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

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

于 2013-09-05T09:56:32.383 回答
0

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

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

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

于 2013-09-05T09:51:34.953 回答
-1

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

于 2020-02-17T16:24:05.267 回答