Heim > Artikel > Backend-Entwicklung > Detailliertes Beispiel, wie PHP ermittelt, ob der Empfänger die E-Mail gelesen hat
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>
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='yes' where email='$email'"); } header("Content/type:image/gif"); $im=imagecreatefromgif("bg.gif"); imagegif($im); imagedestroy($im); ?>
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(); ?>
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['SERVER_NAME']}/image.php?email=$email"; $str=str_replace('background=""',"background=\"$bg_file\"",$content); $mail->MsgHTML($str); $mail->AddAddress($email,$unm); $mail->Send(); } ?>
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);
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!