使用php图像跟踪技巧在电子邮件中显示图像

时间:2013-01-13 19:23:35

标签: php

我正在创建一个时事通讯系统,可以在打开电子邮件时跟踪所有类型的信息。

我开始使用的图像看起来像

<p><img src="http://xxx.com/newsletterInfo.php?newsletter=12&userid=234" width="314" height="20" alt="Cancel Newsletter Subscription"></p>

然后在newsletterInfo.php文件中,我回应了图像的网址。

我认为这不是这样做的方式吗?

有些人可以指出我的问题所在。

由于

更新

发送电子邮件:

            $name = stripslashes($fetchquery["name"]);
            $email = stripslashes($fetchquery["email"]);

            $content = $_POST["maincontent"];
            $subject = $_POST["subject"];
            $message = "<html><head><title>".$subject."</title></head><body>";
            $message .= str_replace('{name}', $name, $content);
            $message .= '<p><img src="http://xxx.com/newsletterInfo.php?newsletter='.$id.'" width="314" height="20" alt="Cancel Newsletter Subscription"></p>';
            $message .= "</body></html>";

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
            $headers .= 'From: Username <email@here.com>' . "\r\n";

            // Mail it
            mail($email, $subject, $message, $headers);

在信息页面上,我已经这样做了:

if(isset($_GET["newsletter"])) {

    $query = $pdo->prepare("UPDATE newsletter SET opened=`opened` +1 WHERE id=:id");
    $query->execute(array(':id' => $_GET["newsletter"]));
    $query_num = $query->rowCount();

    if($query_num > 0){
        echo 'http://xxx.com/cancel.png';
    }

正如你所看到的那样,电子邮件使用mail()函数发送新闻通讯,然后我在图片中放置了一个php文件的url,在这个文件中要求变量,如果设置了它,那么回显图像url然后将数据输入到数据库中,所有这一切都100%工作,因为数据库正在更新。

问题在于图像被破坏了。

如果您右键单击并转到newsletterInfo.php,则会显示网址。

我认为这根本不是这样做的方式。

1 个答案:

答案 0 :(得分:1)

src属性应指向图像。您的src指向包含网址的(动态)文本文件,而不是实际图片。 newsletterInfo.php应输出图片,而不是其网址。

可能的解决方案:

  1. 简单方法:在newsletterInfo.php内进行重定向,如下所示:

    header('Location: url_to_the_image.jpg');
    

    (将文件名替换为您当前正在回复的内容并删除该回音)

  2. 困难之处:将图像作为文件打开,发送正确的标题,然后回显图像。 (不是一个好主意)