Il n’existe actuellement pas de solution 100% fiable, mais la solution la plus « fiable » est celle utilisée par les plateformes d’emailing marketing telles que MailChimp, MailJet, SendInBlue et j’en passe.

Ainsi il s’agit d’envoyer un email au format HTML et de lui ajouter un élément invisible qui va déclencher un appel à un de vos scripts.

Soit votre site lateambichon.com, ce site vous envoie un email au format HTML classique et y inclus une balise image avec pour source un script publique (par exemple un script php) permettant de tracer l’ouverture du mail :

<html>
<body>
    YOUR MESSAGE CONTENT HERE

    <img src="https://lateambichon.com/trackemailopen.php?id=<ID_EMAIL>" height="1" width="1" alt="" border="0" style="height:1px;width:1px;border:0">

</body>
</html>
  • trackemailopen.php est un script dont l’appel peut se faire par un utilisateur anonyme (non connecté au site)
  • ID_EMAIL est l’id de l’email que vous aurez généré et stocké lors de l’envoi pour tracer votre email
  • ❗ ❗ ❗ il est recommandé que cet ID_EMAIL soit un uuid (version V4), c’est à dire un ID de la forme bb7003c0-8ff5-471c-9859-29daf9b17b0e, afin qu’un utilisateur lambda ne puisse pas s’amuser à appeler votre scripts en passant des ID au hasard et tomber facilement sur un ID valide (uuid V4 = 5 × 1036 combinaisons possibles) ❗ ❗ ❗ Mais d’après les tests que j’ai effectué on peut difficilement voir cette url
  • trackemailopen.php est appelé et reçoit l’id de l’email, il vérifie que l’email de cet id existe en base de données, et s’il existe il le marque comme lu
  • en fin de traitement trackemailopen.php renvoie une image de 1 pixel sur 1 pixel (invisible à l’oeil nu), c’est l’image qu’attend la balise <img> que nous avons rajouté dans notre email

Avantages

  • méthode la plus fiable
  • donne un bon aperçu du taux d’ouverture de vos emails
  • invisible pour l’utilisateur

Inconvénient

  • Ne peut être réalisé dans un email de texte brut
  • ne fonctionne pas si le client de messagerie destinataire bloque le HTML
  • ne fonctionne pas si vos contacts ou bien leur client de messagerie ont choisi de ne pas afficher les images

Une source intéressante : https://mailchimp.com/fr/help/about-open-tracking/

… il est futé le bichon ! 🙂

Que se passe-t-il si on place un lien vers un script javascript dans l’attribut src du tag img

<html>
<body>
<img src="script.js" alt="test avec un js en src">
</body>
</html>
// script.js
alert('hello');
console.log('hello');

Hé bien rien !

Car le navigateur va faire une requête http vers l’url (ici le fichier est en local), or comme cette url ne répond pas par une image le navigateur ne va pas télécharger le fichier javascript.

Vous pouvez le vérifier simplement en local :

et aussi vous pouvez vous appuyer sur cette bonne source de Jukka K. Korpela :

If the resource sent by the server is image data, the browser will try to display it. If it happens to be e.g. an HTML document, it will be discarded, and the browser will display the value of the alt attribute instead, or an icon of a broken image, or both.

https://stackoverflow.com/questions/14953792/how-src-attribute-of-img-tag-is-execute
Partager sur les réseaux