You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2024-12-12 11:05:24

jiu2jiu
Member
Registered: 2024-09-13
Posts: 37

Problème affichage images dans mail

Bonjour,

Je n'arrive pas à faire afficher mes images dans mes mails de notifications. J'ai placé mon répertoire "mails" - qui contient toutes mes images - dans /var/www/glpi/pics/, j'ai vérifié la taille des images (Taille limite par défaut des fichiers importés par un collecteur mail) dans Configuration > Générale > Assistance, et j'ai bien donné les droits au dossier "mails". Quel pourrait être le problème?

Cordialement

version 10.0.17

Offline

#2 2025-01-03 16:51:49

mganne41
Member
Registered: 2022-08-26
Posts: 10

Re: Problème affichage images dans mail

Salut,
j'avais un souci lorsque mon collecteur faisait comme ça :

1 - Emission du mail original "HTML" ==> Nok tronqué pas d'image
2 - Reprise du même mail puis transférer à mon collecteur ==> OK Image s'affiche.

j'ai donc fais comme ceci

1. Identification du problème
Le problème venait de la gestion des images intégrées (Content-ID) dans les e-mails reçus par GLPi. Ces images sont souvent insérées dans le corps HTML des e-mails et référencées par src="cid:xxx". GLPi ne traitait pas correctement ces références, ce qui empêchait l’affichage des images dans les tickets.

2. Modifications dans le fichier MailCollector.php
Nous avons :

Ajouté un traitement pour les images intégrées :

Identification des parties des e-mails avec le type MIME image/*.
Extraction du Content-ID pour les images intégrées.
Enregistrement de ces images sur le serveur dans un répertoire défini.
Remplacement des références cid: dans le contenu HTML des e-mails par le chemin d'accès local aux images sauvegardées.
Code ajouté : Voici la logique principale ajoutée dans la méthode getRecursiveAttached :

php
Copier le code
if (preg_match('/^image\/.+/', $content_type)) {
    // Gestion des images intégrées
    if ($part->getHeaders()->has('content-id')) {
        $content_id = trim($part->getHeader('content-id'), '<>');
        $file_path = $path . DIRECTORY_SEPARATOR . 'image_' . $content_id . '.' . explode('/', $content_type)[1];

        // Sauvegarder l'image
        file_put_contents($file_path, $part->getContent());

        // Remplacer les références CID dans le contenu HTML
        $this->htmlContent = str_replace(
            'cid:' . $content_id,
            $file_path,
            $this->htmlContent
        );
    }
}
3. Ajustement des permissions
Pour garantir que GLPi puisse écrire et lire les images sur le serveur, nous avons :

Accordé temporairement des permissions élevées sur le répertoire concerné (/var/www/glpi/src).
Restauré ensuite les permissions sécurisées après le transfert et les modifications.
4. Validation et tests

Après avoir appliqué le correctif :

GLPi a correctement affiché ces images dans le ticket en les sauvegardant et en traitant les références CID.
5. Pourquoi ça fonctionne maintenant ?
GLPi est désormais capable de gérer correctement les images intégrées en tant que pièces jointes via les références Content-ID.
Le correctif a permis de sauvegarder les images sur le serveur et de mettre à jour les liens dans le contenu HTML des e-mails.

Offline

Board footer

Powered by FluxBB