Software is like sex... It's better when it's free.

Projets - Mail-Attitude

Mail-AttitudeMail-Attitude est un site que j'ai réalisé en alternance avec l'entreprise Software-Attitude, filiale technique de Hardware-Attitude.

Cette filiale réalise de nombreux sites complets pour des clients. Mail-Attitude a pour vocation de permettre à ces derniers de posséder un système de newsletters livré en même temps que leur site dans le packaging.

 

Ce site offre plusieurs fonctionnalités au client :

 

  • Gestion de campagnes (création, modification, suppression)
  • Création de newsletters
  • Création de contacts
  • Gestion contacts / listes diffusion
  • Test d'envoi des newsletters
  • Planification de l'envoi réel des newsletters
  • Statistiques avancées pour le client
    • Ordonnée :
      • Nombre d'envois
      • Nombre de lecture
      • Nombre de clics
      • Nombre de mails en erreur
      • Nombre d'inscription
      • Nombre de désinscription
      • Taux de lecture
      • Taux de clic
      • Taux d'erreur
    • Abscisse :
      • Par jour
      • Par semaine
      • Par mois
      • Par année
      • Par news
      • Par nom de domaine
    • Paramètres supplémentaires :
      • Par campagne
      • Par news
      • Bornes

Le client peut donc facilement administrer ses différentes campagnes et newsletters, créer son carnet d'adresse afin de remplir des listes de diffusion à qui il enverra ses news.

Lors de la création de sa newsletters, le client met en forme son mail à l'aide d'un BBCode, il peut également générer des champs dynamiques qui seront remplacées par les infos respectives à chaque destinataire au moment de l'envoi.
Dés lors, il peut choisir les listes de diffusion auxquelles il veut envoyer sa newsletters et planifier la date d'envoi.

Sur le serveur tournent plusieurs crontab qui se chargent d'appeler des scripts PHP aux moments voulus (la nuit).

  • Un 1er script se charge de regarder tous les mails en attente, de se connecter à un serveur SMTP distant, et ce de manière synchronisée, puis de parser dynamiquement le contenu des mails, et enfin de mettre à jour les statistiques.
  • Un 2e script se charge de se connecter à un serveur POP sur une messagerie dédiée pour les mails en erreur, de les déplacer sur le serveur puis de les supprimer.
  • Un 3e script analyse un par un les mails en erreur qui ont été déplacés, tente de récupérer dans les en-têtes les infos plaçées au moment de l'envoi afin d'identifier le destinataire en erreur. Si aucun destinataire n'est trouvé, le script se fie au diagnostic-code contenu dans le mail pour mettre à jour les statistiques.

Les statistiques est une des parties très avancées du projet. Le client peut quasiment tout savoir sur ses newsletters (cf listes ci-dessus).
C'est l'étendue des possibilités au niveau statistiques qui lui confère sa puissance.

Quelques astuces en vrac :

 

  • Pour connaitre les dates d'ouvertures des mails, dans la newsletters est contenue une image d'1px transparente qui est générée par un script PHP. C'est ce script qui met à jour les statistiques au moment de la lecture des mails (avec l'ID en paramètre)
  • Pour ce qui est des clics, les URL sont modifiées à la volée au moment de l'envoi des mails pour pointer sur un script PHP. Ce script met à jour les stats puis redirige de manière transparente le destinataire sur la page de son choix.
  • Pour les erreurs, le script lancé par le 3e crontab s'en charge.
  • Des pages dédiés à l'inscription et la désinscription mettent également à jour les stats.
  • Le reste des statistiques coulent de source

Ce projet fut très enrichissant d'un point de vue humain comme professionnel.
C'était la 1ère fois que j'étais amené à faire du PHP en entreprise !!
J'ai appris à dialoguer avec un serveur pop et un serveur smtp, j'ai également bien galeré avec les statistiques ou les regex mais au final cela fut une très bonne expérience avec une équipe jeune, sympathique, dynamique... Que demande le peuple :)

Accessible en ligne à cette adresse :
http://www.mail-attitude.fr

Screenshots

Prev Play Stop Next