4

私は、小規模なクライアントビジネス向けに構築したWebサービスに電子メール追跡を追加するというアイデアで遊んでいます。私は(サーバー上の画像を参照して)埋め込み画像ソリューションを実行することを計画していましたが、他の誰かがより良い方法を持っていない限り、サーバー上のPHPページを参照する画像タグを使用すると「壊れた画像」アイコンが読み込まれます。これを有効な画像にするにはどうすればよいですか?

メーリングPHPページのコードは次のとおりです。

<?php
   $body = "<html>Hello there!".
    "<img src='http://mysite.com/track.php?name=bob' />".
    "</html>";

    $subject = "Tracking on ".date('Y-m-d H:i:s');

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From: webmaster@mysite.com' . "\r\n";

    mail('my_email@gmail.com',$subject,$body,$headers);
?>

そしてここに追跡コードがあります:

<?php
   include('database_connection.php');
   $query = "INSERT INTO tracking SET name='".$_GET['name']."', date=NOW()";
   mysql_query($query);

   // Tried this, but it doesn't work:
   echo "<img src='http://mysite.com/photos/image.jpg'>";
?>
4

2 に答える 2

6

このようなPHPスクリプトを使用する場合は、HTML画像タグだけでなく画像データを返す必要があります。これを行う最も簡単な方法は、次のようになります。

<?php
header("Content-Type: image/jpeg");
readfile("image.jpeg");

do_all_your_tracking_stuff();

これは最初に画像データを返すため、メールクライアントはSQLクエリが完了するのを待つのではなく、すぐに画像データの表示を開始できることに注意してください。

于 2012-12-22T05:21:48.460 に答える
-1

単純なグーグル検索はうまくいったでしょう...

header('Content-Type: image/jpeg');
readfile('path');

あなたは本当にあなたの直感を使う必要があります:あなたは画像タグで何にリンクしますか?画像ソースにリンクします。実際の画像ファイル。コードで何をしていますか?別の画像ソースでHTMLコードをエコーし​​ます。しかし、クライアントブラウザは、HTMLコードではなく、画像を期待しています。

于 2012-12-22T05:20:59.040 に答える