[RESOLU] pixel transparent pour savoir quand un email est ouvert

Loran1010
Invité n'ayant pas de compte PHPfrance

28 mai 2011, 18:22

Bonjour,
il y a plusieurs annees, j' avais teste cette fonction qui permet d inserer un pixel transparent 1X1 dans le corps d un email HTML, et cela permettait d avoir en retour une confirmation que l email avait bien ete ouvert.
J' ai fait des recherches ssur le net, mais impossible de refaire cette tache
j'ai bien essaye dans l email html , d' inserer "<img src="http://www.XXXXX.com/pixel.gif (cela ne marche pas)..et aussi inserer image , et le chemin sur le site
j'ai aussi un script qui permet d'envoyer un email quand cette page est ouverte
mas comment le gif peut passer l'info au fichier php ?
merci de bien vouloir m'aider, car j'aimerai bien recomprendre ce fonctionnement

Mammouth du PHP | 693 Messages

28 mai 2011, 19:23

L'idée est d'appeler un script php, qui
  • Génère le pixel (à l'aide de la bibliothèque gd2)
  • Enregistre la visite de la page

Eléphanteau du PHP | 10 Messages

28 mai 2011, 19:27

oui, mais quand j insere ceci par exemple dans mon email :
"<img src="www.XXXXXXXX.com/spymail.php">
cela ressort tel quel dans l email
l'eail affiche ce texte et pas l'image

Mammouth du PHP | 693 Messages

28 mai 2011, 19:41

Il y a deux possibilités : soit ton script qui génère l'image est mal fait, le client mail n'arrive pas à lire l'image et donc ignore la balise, soit le client mail a repéré qu'il s'agissait en fait d'un script et pas d'une image statique et donc, pour des raisons de sécurité, désactive la balise.

Pour voir laquelle des solutions est la bonne, il faut que tu entre dans ton navigateur l'adresse de ton script pour voir si tu obtiens une image.

Si non, il faut que tu corrige ton script de génération d'image. Si oui, il faut que tu soit plus malin que le client mail, par exemple en utilisant l'url rewriting. Lorsque spymail.gif est appelé, le serveur web renvoie spymail.php à la place.

Eléphanteau du PHP | 10 Messages

28 mai 2011, 19:53

en fait, deja j'ai un probleme avec mon logcieil de messagerie
quand j'envoies un email en html, le code n'est pas interpret (n'importe quel code), mais est affiche tel quel
j' ai teste avec gmail et windows live mail
deja ca bloque a ce niveau
quant au code php c'est encore un autre probleme
pourtant, il y a quelque annee, j'avais realise cela et ca fonctionnait tres
bien
j'ai meme trouve des sites qui proposent ca, et ca fonctionne tres bien
donc ca vient de moi
peut etre, si tu t y connais assez, on peut se PM ou MSN
car je suis curieux et envie d'apprendre (jsuis novice)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 mai 2011, 22:53

En fait, tu peux envoyer (et recevoir) un mail de deux façon : soit en html, soit en texte brut. En html, les balises html sont interprétées, en texte brute, elles apparaissent telles quel dans le mail. Il faut donc passer les header adéquats lors de l'envoi et configurer correctement la boite mail lors de la réception (en général, le html est accepté par défaut)

A noter par ailleurs que pour éviter ce genre de pratique qui permet également aux spammeurs d'identifier les adresses mails valides (parce que quelqu'un a ouvert le mail), les clients de messageries n'ouvrent plus les images par défaut et requièrent une action de l'utilisateur.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 10 Messages

28 mai 2011, 23:00

ben en fait avec windows live mail, je n' arrive pas a interpreter l html lors de l envoie
a la reception ca apparait en texte
pourtant c'est bien le mode HTML qui est active (en reception comme pour l' envoie)

Eléphanteau du PHP | 10 Messages

28 mai 2011, 23:08

oui c'est ce que je veux faire
voir avec mon script .php si l email envoye est ouvert
le probleme html dans le mail est regle
j'ai mon script php qui anvoies un email quand on visite cette meme page php (et celle ci fait aussi une image png
mais en inserant en html dans l email un src="http://www.XXXXXX.com/spymail.php" (avec le moyen d'inserer une signature en html dans l email) j'ai bien mon image generee par le fichier php dans l 'email, mais a la reception, cela reste une image et non un script
donc mon fichier php ne sert plus a rien
qu'est ce qui va pas? avant j'ai deja realise la meme chose et ca fonctionnait
j'ai meme trouve un site qui propose ceci : faut juste rajouter une image qu'il geenre dans l'email et cela fonctionne, on est averti plus atrd a l' ouverture

ViPHP
xTG
ViPHP | 7331 Messages

29 mai 2011, 10:19

Si l'email affiche bien ton image générée avec le script PHP c'est que le script PHP est bien exécuté...

Eléphanteau du PHP | 10 Messages

29 mai 2011, 10:29

oui mais si si au moment de l'envoi et non a la reception de l'email, dans mon cas, cela n' a strcitement aucun interet
bref, personne a une solution concrete?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 mai 2011, 11:36

Quand il ouvre l'email et qu'il affiches l'image qui se trouve sur internet, l'utilisateur va implicitement faire appel à ton script php pour afficher l'image (c'est donc bien à la lecture du mail et non pas à la génération de celui-ci).

Il suffit donc que ton script php comptabilise cette ouverture à chaque fois qu'il est appelé pour afficher l'image dans un mail :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 10 Messages

29 mai 2011, 11:56

ok, voici mon script (ca ira plus vite)

<?php
header ("Content-type: image/png");
$image = imagecreate(30,30);
$blanc = imagecolorallocate($image, 0, 0, 0);
imagepng($image);


$heure=strftime("%c");
$ip=@$_SERVER['REMOTE_ADDR'];

$stat="
Votre mail a ete lu :
Date $heure
Adresse IP : $ip
";
mail ("[email protected]", "On a lus votre mail !", "$stat");
?>


quand je vais sur cette page php directement, cela fonctionne parfaitement (image generee sur la page et affichee a l' ecran + email envoye comme quoi la page a ete visite)
mainteant le probleme est comment envoye cette image dans un email en html (quand je le fais cela ne fonctionne pas..et en mettant imd scr......... seul le texte apparait)
j'espere avoir ete assez clair a present
donc si quelmqu' un a reellment une solution CONCRETE , je suis preneur :-)
merci d'avance

Eléphanteau du PHP | 10 Messages

29 mai 2011, 12:02

par exemple , ici , un exemple reel de ce que je souhaiterai (et ca fonctionne)
http://www.getnotify.com/

donc si quelqu' un a reellement une soltuion, qu'il se manifeste SVP
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 mai 2011, 13:42

Sans vouloir te froisser, la solution réelle et concrète à ce que tu veux mettre en oeuvre consiste à :
- envoyer un mail en html,
- inclure une balise image dont l'url pointe vers ton script php
- prier pour que le destinataire affiche le mail en html, autorise l'affichage des images et soit connecté à internet au moment où il affiche l'image.

Si cela ne fonctionne pas, c'est que tu as un problème de conception, pas de solution. Et si dans le mail reçu le html n'est pas interprété alors que les conditions ci-dessus sont réunies, c'est que le problème se trouve dans le script qui envoi le mail, pas dans celui qui le trace...

Montre nous le code du mail qui est envoyé et l'on pourra plus facilement voir s'il y a des erreurs qui empêcherait l'image de s'afficher et t'aider à rectifier celles-ci :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 10 Messages

29 mai 2011, 13:58

cela ne me froisse pas du tout ;-)
je suis la pour apprendre
oui, tu as tout compris, ce que je souhaite c'est tout ca (pas par ce que j' en ai besoin, pour ca j ai indique : un site existe deja pour faire la meme chose, mais juste je voudrais comprendre le pourquoi du comment ;-) )
ben en fait, je n' ai pas de code HTML dans mon mail
j'essaye de copier/coller mon image generee par la page .php , et cela ne marche pas (alors qu' a partir du site cite auparavant, cela fonctionne si on copie/colle leur image )
soit j envoies : "<img src=http://www.XXXXXXXX/spymail.php'> , comme j' ai deja explique plus haut, mais cela renvoie un mail avec ce code (il est pas interprete, comme si c etait en texte brut, alors que je suis en HTML dans mes mails)
j espere avoir ete clair cette fois : c' est pourtant simple ce que je veux (voir l exemple su site cite en haut)
merci