Heim > Backend-Entwicklung > PHP-Tutorial > Detailliertes Beispiel, wie PHP ermittelt, ob der Empfänger die E-Mail gelesen hat

Detailliertes Beispiel, wie PHP ermittelt, ob der Empfänger die E-Mail gelesen hat

伊谢尔伦
Freigeben: 2023-03-11 15:32:02
Original
1536 Leute haben es durchsucht

Nachdem sie phpmailer zum Versenden von E-Mails verwendet haben, möchten viele Menschen wissen, ob die andere Partei die E-Mail gelesen hat? Im Allgemeinen können wir das nicht wissen. Gibt es also eine Möglichkeit?

Für dieses Problem gibt es eine einfache Lösung. Wir wissen, dass der E-Mail-Inhalt in Form von HTML gesendet werden kann und wir Bilder in den Inhalt einfügen können, sodass der Schlüssel im Bild liegt.

Angenommen, der Inhalt unserer E-Mail sieht so aus:

Der Code der Datei content.php lautet wie folgt:

<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>
Nach dem Login kopieren

Wie schreibe ich? das $bg ? Was passiert, wenn die E-Mail an mehrere Personen gesendet wird? Wie kann man hier unterscheiden?

Angenommen, der Link sieht so aus: http://www.xxx.com/image.php?email=$email Sehen Sie sich den Code von image.php noch einmal an

Der Code der Datei image.php lautet wie folgt:

<?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); 
?>
Nach dem Login kopieren

Sie werden es vielleicht verstehen, nachdem Sie das gesehen haben. Der Inhalt der E-Mail, die ich gesendet habe, lautet also wie folgt:

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

Zu diesem Zeitpunkt haben wir das Hintergrundbild im E-Mail-Inhalt noch nicht ersetzt. Die nächsten Fragen werden nach und nach gestellt Um dieses Problem zu lösen, ist dies Teil des Codes zum Versenden von E-Mails mit 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(); 
} 
?>
Nach dem Login kopieren

Warum müssen wir sie hier einzeln in einer Schleife senden? Denn um zu unterscheiden, welcher Kontakt die E-Mail gelesen hat, wird der Inhalt jeder E-Mail im Hintergrundbild unterschiedlich dargestellt. Vor dem Senden verarbeiten wir den Inhalt und ersetzen den Hintergrund, sodass die Quelle des Hintergrundbilds des E-Mail-Inhalts wie folgt aussieht: http://www.domain.com/image.php? @sina.comWarte.

Beachten Sie, dass hier ein weiteres Problem vorliegt. Nachdem Sie den obigen Code ausgeführt haben, werden 3 E-Mails an die erste Person, 2 E-Mails an die zweite Person und 1 E-Mail an die dritte Person gesendet . Feng, warum ist das hier? Werfen wir hier einen Blick auf die AddAddress-Methode. Die Änderungsmethode lautet: Öffnen Sie class.phpmailer.php, suchen Sie Zeile 310, ändern Sie private $to=Array() in public $to=Array().

Senden Sie dann die E-Mail „Hinzufügen“. zum Code:

$mail->to=Array();
$mail->AddAddress($email,$unm);
Nach dem Login kopieren

An dieser Stelle gibt es keinen Grund, zu viel zu erklären.

Das obige ist der detaillierte Inhalt vonDetailliertes Beispiel, wie PHP ermittelt, ob der Empfänger die E-Mail gelesen hat. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage