| Mail Cleaner 🚫

Présentation

Le projet Mail Cleaner représente une solution axée sur la gestion des e-mails d'abonnés renvoyés en erreur, suite à l'envoi de newletters pour le site associatif Assoweb.


Fonctionnalités :

  • Filtrage de Spam : Cette fonctionnalité permet d'identifier et de supprimer les mails abonnés en erreur pour prévenir les associations qu'elles ont un nombre conséquent de mails en erreur et que ces mails seront supprimés dans un délai d'un mois.
  • Base de Données (BDD) : L'utilisation du langage SQL permet une intégration fluide avec la base de données. Les informations pertinentes sur les e-mails identifiés en erreur sont stockées de manière organisée, offrant une traçabilité pour des actions ultérieures.
  • Identification des Adresses Malveillantes : Chaque e-mail d'erreur est associé à une adresse mail d'origine. Le système détermine la raison pour laquelle cette adresse est considérée comme malveillante par la boîte mail, fournissant ainsi des informations détaillées sur les motifs du filtrage.
  • Nettoyage de la base de données : Une fois que les e-mails indésirables sont identifiés et les informations correspondantes sont stockées dans la base de données, le Mail Cleaner peut automatiquement supprimer ces messages lors de l'appel de la fonction de suppression.

Le projet Mail Cleaner s'impose comme une solution permettant d'éliminer de manière proactive les e-mails apparaissant en erreurs pour les newsletters depuis la plateforme SendGrid. Il s'agit d'une plateforme de communication par e-mail qui fournit des services d'envoi, de réception et de gestion des e-mails pour les développeurs et les entreprises. L'API SendGrid permet aux développeurs d'intégrer facilement les fonctionnalités d'envoi d'e-mails de SendGrid dans leurs propres applications, sites web ou services en ligne.


Gestion du projet


La gestion du projet se déroule sur l'outil collaboratif Notion où il est possible de consulter les missions de tous les collaborateurs du projet et d'estimer le temps passé sur chaque tâche.

blog

Lors de l'envoie de nos newsletters aux différents utilisateur de la plateforme Assoweb, plusieurs envoies furent bloqués ou apparaissaient en erreur. Il a donc fallu développer une solution afin de regrouper toutes les adresses mails utilisateurs dont l'envoie des newsletters étaient impossible afin de les supprimer de notre répertoire. Deux objectifs furent à atteindre : persister les mails en erreur dans une base de données, c'est-à-dire récupérer les mails des utilisateurs en erreur en g'erant certains cas de doubons, et de pagination ; puis grouper ces mails par association, c'est-à-dire par site d'utilisateur en contactant la base de données d'Assoweb afin de récupérer les sites et utilisateurs associéss aux adresses mails en erreur.

blog blog

Résultat obtenus

bdd bdd bdd bdd bdd

Les Technologies utilisées

PHP MySQL

Listing des fonctionnalités du programme

- Fichier MailManager.php

__construct() : Le constructeur de la classe. Il initialise les variables de connexion à la base de données et configure les paramètres d'erreur pour afficher les erreurs PHP.

getCollectedEmailsCount() : Renvoie le nombre d'emails collectés jusqu'à présent.

getAndPersistEmails($resource_name, $page) : Cette fonction récupère et persiste les emails provenant de l'API SendGrid en utilisant le nom de la ressource spécifiée et la pagination. Elle stocke également les emails dans une base de données locale après vérification de leur existence.

sync_new_abonnes_and_members() : Synchronise les nouveaux abonnés et membres en interrogeant les bases de données locales et distantes pour les membres et abonnés, puis en les insérant dans la base de données locale.

delete_adress() : Supprime une adresse spécifique des abonnés.

sync_new_users() : Synchronise les nouveaux utilisateurs en insérant des données depuis une base de données externe dans la base de données locale.

sync_new_sites() : Synchronise les nouveaux sites en insérant des données depuis une base de données externe dans la base de données locale.

set_last_sync_date($last_sync_date = null) : Met à jour la date de dernière synchronisation dans la base de données.

sql_connect() : Établit une connexion à la base de données MySQL.

exists($mail) : Vérifie si un email existe déjà dans la base de données.

get_mailId($mail) : Renvoie l'ID d'un email à partir de son adresse.

get_last_sync_date() : Renvoie la date de la dernière synchronisation.

has_last_sync_date() : Vérifie si une date de dernière synchronisation existe déjà.

sync_member_site($site) : Synchronise les membres du site à partir d'une base de données externe.

sync_abonne_site($site) : Synchronise les abonnés du site à partir d'une base de données externe.

createSite($site) : Crée un nouveau site dans la base de données locale.

get_siteId($site) : Renvoie l'ID d'un site à partir de son adresse.

create_user($mail_id, $site_id, $type, $nom = null, $prenom = null) : Crée un nouvel utilisateur dans la base de données locale.

sync_mails_contact($site_adresse) : Synchronise les emails de contact à partir d'une base de données externe.

persist_mail_contact($site_adresse, $emails) : Persiste les emails de contact dans la base de données locale.

get_mails_contact($site_adresse) : Récupère les emails de contact à partir d'une base de données externe.

sync_contact_error($emails, $site_adresse) : Synchronise les erreurs de contact à partir d'une base de données externe.

delete_abonne_mail($site_adresse) : Supprime les abonnés de la base de données.

- Fichier get-mail.php

require('MailManager.php'); : Charge le fichier contenant la classe MailManager.

$last_sync_date = date('Y-m-d H:i:s'); : Initialise une variable avec la date actuelle pour la dernière synchronisation.

$mail_manager = new MailManager(); : Crée une nouvelle instance de la classe MailManager.

$mail_manager->getAndPersistEmails('spam_reports'); : Appelle la fonction getAndPersistEmails de l'objet MailManager pour récupérer et persister les emails de rapports de spam.

$mail_manager->getAndPersistEmails('blocks'); : Appelle la fonction getAndPersistEmails de l'objet MailManager pour récupérer et persister les emails bloqués.

$mail_manager->getAndPersistEmails('invalid_emails'); : Appelle la fonction getAndPersistEmails de l'objet MailManager pour récupérer et persister les emails invalides.

$mail_manager->getAndPersistEmails('bounces'); : Appelle la fonction getAndPersistEmails de l'objet MailManager pour récupérer et persister les emails rebondis.

$mail_manager->sync_new_sites(); : Appelle la fonction sync_new_sites de l'objet MailManager pour synchroniser de nouveaux sites.

$mail_manager->sync_new_users(); : Appelle la fonction sync_new_users de l'objet MailManager pour synchroniser de nouveaux utilisateurs.

$mail_manager->sync_new_abonnes_and_members(); : Appelle la fonction sync_new_abonnes_and_members de l'objet MailManager pour synchroniser de nouveaux abonnés et membres.

$mail_manager->set_last_sync_date($last_sync_date); : Met à jour la date de dernière synchronisation en utilisant la valeur stockée dans $last_sync_date.

Code

Mail Manager
Mail Manager
Mail Manager
Mail Manager
Mail Manager
Mail Manager
Mail Manager
Mail Manager
code-mailmanager
getmails

Sauvegarde du projet

Chaque nouvelle version de ce projet est poussée vers un dépôt distant et passée en revue par d'autres développeurs dans une Merge Request, puis validée et mise en production via le dépôt distant GitLab.

github
vue-projet-gitlab
mr-projet-gitlab
prod-projet-gitlab