Bonjour, je fais ce sujet car je suis en stage dans une entreprise et mon projet est de mettre en place un système automatisé avec un bouton "Flic". Lors de l'appui de ce bouton, un mail serait envoyé automatiquement sur une boite mail dédiée.

Maintenant mon souci est de savoir si il existe un moyen en PHP de "lire" les mails et de les retranscrire dans une BDD.

Merci d'avance pour votre aide future.

2 réponses


Bonjour,

Ton message est un peu vague, je ne suis pas sûr de tout comprendre, tu cherches à faire un genre de système d'évènements qui repose sur des mails ?
Deux questions avant tout:

  • Où devrait être le dit bouton
  • Où est sensé arriver le mail (sur un serveur de l'entreprise, sur un gmail etc.)

Ensuite, pour ce qui est de ta question, il est possible d'envoyer un mail avec php, avec la fonction mail notamment, ou imap_mail.

Pour la lecture, c'est aussi totalement possible en utilisant les fonctions imap_* (Internet Message Access Protocol).
Je te conseille de te renseigner un peu sur le fonctionnement d'IMAP et d'IMAP avec PHP, mais en gros il faudrait suivre à peu près cette marche:

  • Ouvrir un flux IMAP avec le serveur sur lequel le mail est attendu à l'aide de imap_open
  • Il faut ensuite récupérer les messages. Récupérer tous les messages de la boite serait excessif je te conseille de les filtrer. Tu peux par exemple utiliser imap_search. J'ai un doute sur le flag à utiliser comme critère cependant. Je te conseillerai de chercher les messages avec le flag "unseen" et de le set à "seen" à la fin de ton traitement. Utiliser new pourrait marcher, mais je suppose (c'est assez flou) que le récupérer une fois enlève le new, c'est donc moins contrôlable.
  • Tu dois ensuite récupérer le corps du message avec par exemple imap_fetchbody et faire tes traitements
  • Enfin, si tu utilise la méthode de "seen/unseen", tu peux set le flag seen avec imag_setflag_full

C'est assez libre en realité, il y a plusieurs façons de faire. Cependant, si jamais - et je sais que c'est rarement le cas en stage - tu as de la marge de manoeuvre, et que tu essaies bien comme je le pense d'implémenter un système d'évènements qui repose sur des mails, je te conseille quand même de regarder d'autres systèmes, que ce soit implémenter une API ou utiliser un système type RabbitMQ

Tout d’abord, assurez-vous d’avoir une base de données MySQL configurée. Vous pouvez vous connecter à la BDD en utilisant l’extension PDO (PHP Data Objects) ou MySQLi (MySQL Improved). Je recommande d’utiliser PDO pour sa flexibilité et sa compatibilité avec différents systèmes de bases de données.
Voici un exemple de connexion à une BDD MySQL en utilisant PDO :
<?php
$host = 'localhost'; // Nom du serveur (peut varier selon votre configuration)
$dbname = 'votre_base_de_donnees'; // Nom de votre base de données
$user = 'votre_utilisateur'; // Nom d'utilisateur
$password = 'votre_mot_de_passe'; // Mot de passe

try {
$bdd = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $password);
// Vous êtes maintenant connecté à la BDD
} catch (PDOException $e) {
echo "Erreur de connexion : " . $e->getMessage();
}
?>
uno online