PHP:查看谁已阅读已发送的电子邮件?

PHP*_*ari 12 php

我正在向一些用户发送电子邮件,并想知道谁读过它,意味着如果有人读过该电子邮件,那么将保留一个包含该用户的电子邮件地址的日志/时间/ IP的日志文件.为此,我发送了一个带有电子邮件(html模板)的javascript函数,当用户打开该电子邮件时,它只会提醒用户的电子邮件地址:

for($n=0; $n<sizeof($checkBox); $n++){
        $mail = new PHPMailer();
        $mail->IsHTML(true);
        $mail->Subject = $subject;
        $function = "<script language='javascript'>function stats(emailId){alert(emailId);}</script>";
        $bodyOpen = "<body onload='stats(".$checkBox[$n].");'>"; 
        $msg_body .= $body .= "<table><tr><td>Hello Everyone</td></tr></table></body>";
        $mail->Body = $function.$bodyOpen.$msg_body;
        $mail->WordWrap = 50;
        $mail->FromName = 'Muhammad Sajid';
        $mail->IsMAIL();        
        $mail->From = 'webspot49@gmail.com';
        $mail->AddAddress($checkBox[$n]);
        $sent = $mail->Send();
    }
Run Code Online (Sandbox Code Playgroud)

html模板工作正常并在页面加载时显示警告弹出窗口但如果我用来发送此html模板则不起作用.

我只想用PHP5.xx/javascript解决这个问题,没有其他软件或第三方工具.任何帮助..?

Pop*_*lus 19

将标题添加到电子邮件:

Disposition-Notification-To: you@yourdomain.com
Run Code Online (Sandbox Code Playgroud)

如上所述,它不可靠,最好做这样的事情:

<img src="http://yourdomain.com/emailreceipt.php?receipt=<email of receiver>" />
Run Code Online (Sandbox Code Playgroud)

并将其记录在一个数据库中,尽管这又受到电子邮件客户端显示图像的能力的限制,有时它甚至可能将邮件放入垃圾邮件,因为它没有检测到图像...一种可以实际输出的方法该脚本末尾的图像(例如您的徽标).

编辑:在phpmailer类的快速查找给了我以下内容:

$mail->ConfirmReadingTo = 'yourown@emailaddress.com';
Run Code Online (Sandbox Code Playgroud)

但它与上面的Disposition-Notification-To方法相同.

  • 如上所述,Dispoisition-Notification-To方法不适用于所有电子邮件客户端.至于img标签方法,你制作一个PHP脚本,它接收收据获取变量并处理它(存储在数据库中,或者你想做什么,好像接收者确认收到了电子邮件),如果电子邮件客户端显示'使用php脚本作为源代码,它将运行脚本...以避免邮件客户端可能认为链接是恶意的,您应该在脚本的末尾输出一个真实的图像 (2认同)

tre*_*005 7

像这样在电子邮件中发送信标图像

<img src='http://www.yourserver.com/beacon.php?email_id=$email_id&email_address=$user_address' style='width:1px;height:1px'>
Run Code Online (Sandbox Code Playgroud)

然后使用beacon.php文件记录数据.然后,您将要输出带有适当标题的1X1图像.

重要说明
许多流行的电子邮件客户端(例如Gmail)现在都会阻止外部图像,所以这是目前为止,而不是万无一失.