Maison > développement back-end > tutoriel php > Exemple détaillé de la façon dont PHP détermine si le destinataire a lu l'e-mail

Exemple détaillé de la façon dont PHP détermine si le destinataire a lu l'e-mail

伊谢尔伦
Libérer: 2023-03-11 15:32:02
original
1560 Les gens l'ont consulté

Après avoir utilisé phpmailer pour envoyer des emails, beaucoup de gens veulent savoir si l'autre partie a lu l'e-mail ? D’une manière générale, nous ne pouvons pas le savoir, alors y a-t-il un moyen ?

Il existe une solution simple à ce problème. Nous savons que le contenu de l'e-mail peut être envoyé au format HTML, et nous pouvons insérer des images dans le contenu, donc la clé réside dans l'image.

Supposons que le contenu de notre email ressemble à ceci :

Le code du fichier content.php est le suivant :

<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>
Copier après la connexion

Comment écrire ce $bg ? Que se passe-t-il si l'e-mail est envoyé à plusieurs personnes ? Comment distinguer ici ?

Supposons que le lien ressemble à ceci : http://www.xxx.com/image.php?email=$email Regardez à nouveau le code de image.php

Le code du fichier image.php est le suivant :

<?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); 
?>
Copier après la connexion

Vous comprendrez peut-être après avoir vu ceci. Le contenu de l'e-mail que j'ai envoyé est donc le suivant :

<?php 
ob_start(); 
include_once("content.php"); 
$content=ob_get_contents(); 
ob_end_clean(); 
?>
Copier après la connexion

À ce stade, nous n'avons pas remplacé l'image de fond dans le contenu de l'e-mail. Les prochaines questions seront progressivement adressées. résoudre ce problème, cela fait partie du code pour envoyer des emails en utilisant 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(); 
} 
?>
Copier après la connexion

Pourquoi devons-nous les envoyer un par un en boucle ici ? Car afin de distinguer quel contact a lu l’email, l’image de fond du contenu de chaque email s’affiche différemment. Avant l'envoi, nous traitons le contenu et remplaçons l'arrière-plan, de sorte que le src de l'image d'arrière-plan du contenu de l'e-mail que nous voyons ressemble à ceci : http://www.domain.com/image.php email=aaa? @sina.comAttendez.

Notez qu'il y a un autre problème ici. Après avoir exécuté le code ci-dessus, vous découvrirez un problème. Il y a 3 e-mails envoyés à la première personne, 2 e-mails à la deuxième personne et 1 à la troisième personne. .Feng, pourquoi est-ce ici ? Jetons un coup d'œil à la méthode AddAddress ici. La méthode de modification est la suivante : ouvrez class.phpmailer.php, recherchez la ligne 310, remplacez private $to=Array() par public $to=Array().

Envoyez ensuite l'e-mail Ajouter au code :

$mail->to=Array();
$mail->AddAddress($email,$unm);
Copier après la connexion

À ce stade, il n'est pas nécessaire de trop expliquer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal