ホームページ >バックエンド開発 >PHPチュートリアル >PHP が受信者が電子メールを読んだかどうかを判断する方法の詳細な例

PHP が受信者が電子メールを読んだかどうかを判断する方法の詳細な例

伊谢尔伦
伊谢尔伦オリジナル
2017-06-27 10:45:551525ブラウズ

phpmailerを使ってメールを送信した後、相手がメールを読んだかどうか知りたい人も多いのではないでしょうか?一般的にはこれを知ることはできませんが、何か方法はありますか?

この問題には簡単な解決策があり、電子メールのコンテンツを HTML 形式で送信でき、コンテンツに画像を挿入できることがわかっています。そのため、鍵は画像にあります。

メールの内容が次のようなものであるとします。

ファイル content.php のコードは次のとおりです:

<table width="555" height="50" border="0" align="center" cellpadding="0" cellspacing="0" background="<?=$bg?>">
<tr>
 <td>这是测试内容</td>
   </tr>
   <tr>
 <td> </td>
   </tr>
   <tr>
 <td> </td>
   </tr>
 </table>

この $bg はどうやって書くのですか?メールが複数の人に送信された場合はどうなりますか?ここの見分け方は?

リンクが次のようであるとします:

http://www.xxx.com/image.php?email=$email image.php のコードをもう一度見てください

ファイル image.php コードは次のとおりです:

<?php 
$email=$_GET["email"]; 
if($id) 
{ 
  include_once("/conn.php"); 
  mysql_query("update mail_list set has_read=&#39;yes&#39; where email=&#39;$email&#39;"); 
} 
header("Content/type:image/gif"); 
$im=imagecreatefromgif("bg.gif"); 
imagegif($im); 
imagedestroy($im); 
?>

これを見れば分かるかも知れません。送信したメールの内容は次のとおりです。

<?php 
ob_start(); 
include_once("content.php"); 
$content=ob_get_contents(); 
ob_end_clean(); 
?>

ここに書いてありますが、メール内容の

背景画像は置き換えていません。次の問題は、この問題を徐々に解決します。これは、phpmailの一部を使用して送信されます。メールのコード:

<?php 
/* 
$contact=array("userA"=>"aaaa@sina.com","userB""=>"bbb@163.com","userC"=>"ccc@qq.com"); 
*/ 
foreach ($contact as $unm=>$email) 
{ 
  $bg_file="http://{$_SERVER[&#39;SERVER_NAME&#39;]}/image.php?email=$email"; 
  $str=str_replace(&#39;background=""&#39;,"background=\"$bg_file\"",$content); 
  $mail->MsgHTML($str); 
  $mail->AddAddress($email,$unm); 
  $mail->Send(); 
} 
?>

なぜループで 1 つずつ送信する必要があるのですか?どの連絡先がメールを読んだかを区別するために、各メールの内容の背景画像が異なって表示されるためです。送信する前に、コンテンツを処理して背景を置き換えます。これにより、表示される電子メール コンテンツの背景画像のソースは次のようになります:

http://www.domain.com/image.php?email= aaa@sina .com待ってください。

ここで別の問題があることに注意してください。上記のコードを実行すると、1 人目に 3 通のメールが送信され、2 人目に 2 通のメールが送信されます。なぜでしょうか。毛織物?ここでは、AddAddress メソッドを見てみましょう。

変更方法は次のとおりです: class.phpmailer.php を開き、310 行目を見つけて、private $to=Array() を public $to=Array() に変更します。

次に、メール送信用のコードを追加します:

$mail->to=Array();
$mail->AddAddress($email,$unm);

この時点では、あまり説明する必要はありません。

以上がPHP が受信者が電子メールを読んだかどうかを判断する方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。