You are not logged in.
Pages: 1
Bonjour
Lors de l'édition d'un suivi avec ajout d'une pièce jointe, est-il possible que la notification par mail du suivi puisse contenir la pièce jointe ?
Si non, est-il alors possible d'ajouter un lien vers le document dans cette notification (seulement le document joint et pas les précédentes pièces jointes s'il y a en a) ?
Pour information :
L'option Ajouter des documents dans les notifications de ticket est valué sur Oui
Avec l'option ci-dessus, je n'ai rien de plus dans mes notificatins de suivi
Version de GLPI : 0.90.1
Version OS : Ubuntu 14.04.3
Ci-dessous un exemple de notification que je reçois :
[2016-02-24 12:18] Privé : Non
Rédacteur Gildwen
Description J'essaye encore
Document Document ticket 46 - Veuve-Noire.jpg ajouté
Date d'ouverture 2016-02-24 12:18
Source de la demande Helpdesk
Merci d'avance pour votre aide.
Cordialement
Offline
Vous avez défini votre notification avec quelle balise pour les documents ?
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
J'ai le même problème. Dans "Configuration>Notifications>Configuration>Ajouter des documents dans les notifications de ticket à OUI " et dans le courriel ça m'indique qu'un document est ajouté et le nom du fichier, mais aucun fichier physiquement rattaché au courriel ni de lien pour le télécharger. Alors j'ai pensé afin d'éviter la confusion pour les usagers qui receoivent ce courriel de simplement placer l'option "Configuration>Notifications>Configuration>Ajouter des documents dans les notifications de ticket à NON", mais malheureusement le résultat est identique dans le courriel de notification, il indique quand même le nom du fichier???
Est-ce que quelqu'un connait une solution? C'est le seul problème qui m'empêche de mettre à jours notre version 0.85.5 vers 0.90.1 :-(
GLPI 9.2.1 | Wampserver 3.1.0 | Apache 2.4.27 | PHP 7.1.9 | MySQL 5.7.19
Offline
Bonjour,
Je constate le même (dys-)fonctionnement en 0.90.1, à savoir :
Avec l'option "Configuration>Notifications>Configuration>Ajouter des documents dans les notifications de ticket" à OUI ou à NON, j'ai dans les 2 cas le même comportement : il y a "Document Document ticket XX - [nomdudoc] ajouté" systématiquement affiché.
Lorsque j'essaye d'ajouter le code suivant dans ma notification, que ce soit à l'intérieur d'une balise "##FOREACH last followups##" ou à l'extérieur, rien ne s'affiche :
##FOREACHdocuments##
<p>##document.weblink##</p>
##ENDFOREACHdocuments##
Il faudrait que le document soit joint au mail, ou à minima qu'il y ait un lien pour y accéder.
GLPI v9.5.1
FusionInventory 9.5
Offline
Bonjour,
Je suis exactement dans le même cas, en 0.90.1 et l'option Ajouter des documents dans les notifications de ticket est valué sur Oui.
J'ai placer toutes les balises disponible :
##FOREACHdocuments##
##document.filename##
##document.heading##
##document.id##
##document.name##
##document.url##
##document.weblink##
##ENDFOREACHdocuments##
Il faudrait que le document soit joint au mail et non pas sont URL, mon serveur n'est pas connecter sur l'exterieure.
Offline
Pour test, j'ai cloner ma machine de prod et appliqué la version 0.90.5 sur le clone.
Le problème persiste toujours.
Offline
Je ne m'en sors pas avec cette balise, est-ce un bug dans le système où cela n'est pas implémenté ?
Je n'ai malheureusement pas les compétences pour écrire un bout de code pour résoudre mon problème.
Je sais que vous êtes tous des bénévoles, mais j’ai vraiment besoin d’un petit coup de main.
Encore merci d’avance à tous,
Offline
J'ai réussit ce dont je voulais grace à kiricou, il a poster un bout de code permettant ceci en 0.85.5
Je l'ai reprit pour la 0.90.1 et cela fonctionne ..!
Peut t'on envisager de la voire inclut dans une prochaine release ?
bonjour,
tout à fait, ça fonctionne !
(mais cette balise n'est pas dans la liste des balises disponibles affichée en aide lors de la traduction d'une notification)merci
voici ce que je fais pour que GLPI corresponde à mon mode de fonctionnement : pour la gestion des tickets, un maximum d'échanges se passent par mail et je souhaitais que les docs soient joints aux mails :
voici mon bout de code si ça peut intéresser, c'est un peu du bricolage:
0.85.5*** queuedmail.class.php 2015-09-15 18:10:47.000000000 +0200 --- queuedmail.class.phpV2 2015-11-30 17:52:40.722139496 +0100 *************** class QueuedMail extends CommonDBTM { *** 333,339 **** * @return true if send false if not **/ function sendMailById($ID) { ! global $CFG_GLPI; if ($this->getFromDB($ID)) { --- 333,339 ---- * @return true if send false if not **/ function sendMailById($ID) { ! global $CFG_GLPI, $DB; if ($this->getFromDB($ID)) { *************** class QueuedMail extends CommonDBTM { *** 357,362 **** --- 357,425 ---- } $mmail->Subject = $this->fields['name']; + $lastFollowupDocument = False; + if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 ) + { + #on est dans le cas d'un ticket + $lastFollowupDocument = False; + $ticket = new Ticket(); + // Check if ticket exists + if ($ticket->getFromDB($this->fields["items_id"])) + { + # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation + // Get all attached documents of ticket + $query = "SELECT `glpi_documents_items`.`id` AS id, + `glpi_documents_items`.`documents_id` AS docId, + `glpi_documents_items`.`date_mod` AS date_mod + FROM `glpi_documents_items` + WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."' + AND `glpi_documents_items`.`itemtype` = 'Ticket' "; + + $result = $DB->query($query); + $my_docs = array(); + $dateMessage = ''; + if ($DB->numrows($result)) { + while ($data = $DB->fetch_assoc($result)) { + if (!empty($data['id'])) { + $my_docs[]=$data; + } + } + #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments + if (!empty($this->fields['messageid'])) { + preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches); + $messageid_timestamp = $matches[1]; + $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp)); + $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S")); + } + + $link_doc = array(); + if (is_array($my_docs) && count($my_docs)>0) { + foreach ($my_docs as $the_doc) { + $dateDoc = new DateTime($the_doc['date_mod']); + if ($dateDoc > $dateMessage) { + $TheDoc = new Document(); + $TheDoc->getFromDB($the_doc['docId']); + $lastFollowupDocument[] = $TheDoc; + } + } + } + } + } + + + if ($lastFollowupDocument != False ) + { + foreach ($lastFollowupDocument as $doc2Send) { + + $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'], + $doc2Send->fields['filename'], + 'base64', + $doc2Send->fields['mime']); + } + + } + } + if (empty($this->fields['body_html'])) { $mmail->isHTML(false); $mmail->Body = $this->fields['body_text'];
Offline
Les demandes de modification sont à poster ici : http://glpi.userecho.com/
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
J'ai réussit ce dont je voulais grace à kiricou, il a poster un bout de code permettant ceci en 0.85.5
Je l'ai reprit pour la 0.90.1 et cela fonctionne ..!
Peut t'on envisager de la voire inclut dans une prochaine release ?
kiricou wrote:bonjour,
tout à fait, ça fonctionne !
(mais cette balise n'est pas dans la liste des balises disponibles affichée en aide lors de la traduction d'une notification)merci
voici ce que je fais pour que GLPI corresponde à mon mode de fonctionnement : pour la gestion des tickets, un maximum d'échanges se passent par mail et je souhaitais que les docs soient joints aux mails :
voici mon bout de code si ça peut intéresser, c'est un peu du bricolage:
0.85.5*** queuedmail.class.php 2015-09-15 18:10:47.000000000 +0200 --- queuedmail.class.phpV2 2015-11-30 17:52:40.722139496 +0100 *************** class QueuedMail extends CommonDBTM { *** 333,339 **** * @return true if send false if not **/ function sendMailById($ID) { ! global $CFG_GLPI; if ($this->getFromDB($ID)) { --- 333,339 ---- * @return true if send false if not **/ function sendMailById($ID) { ! global $CFG_GLPI, $DB; if ($this->getFromDB($ID)) { *************** class QueuedMail extends CommonDBTM { *** 357,362 **** --- 357,425 ---- } $mmail->Subject = $this->fields['name']; + $lastFollowupDocument = False; + if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 ) + { + #on est dans le cas d'un ticket + $lastFollowupDocument = False; + $ticket = new Ticket(); + // Check if ticket exists + if ($ticket->getFromDB($this->fields["items_id"])) + { + # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation + // Get all attached documents of ticket + $query = "SELECT `glpi_documents_items`.`id` AS id, + `glpi_documents_items`.`documents_id` AS docId, + `glpi_documents_items`.`date_mod` AS date_mod + FROM `glpi_documents_items` + WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."' + AND `glpi_documents_items`.`itemtype` = 'Ticket' "; + + $result = $DB->query($query); + $my_docs = array(); + $dateMessage = ''; + if ($DB->numrows($result)) { + while ($data = $DB->fetch_assoc($result)) { + if (!empty($data['id'])) { + $my_docs[]=$data; + } + } + #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments + if (!empty($this->fields['messageid'])) { + preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches); + $messageid_timestamp = $matches[1]; + $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp)); + $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S")); + } + + $link_doc = array(); + if (is_array($my_docs) && count($my_docs)>0) { + foreach ($my_docs as $the_doc) { + $dateDoc = new DateTime($the_doc['date_mod']); + if ($dateDoc > $dateMessage) { + $TheDoc = new Document(); + $TheDoc->getFromDB($the_doc['docId']); + $lastFollowupDocument[] = $TheDoc; + } + } + } + } + } + + + if ($lastFollowupDocument != False ) + { + foreach ($lastFollowupDocument as $doc2Send) { + + $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'], + $doc2Send->fields['filename'], + 'base64', + $doc2Send->fields['mime']); + } + + } + } + if (empty($this->fields['body_html'])) { $mmail->isHTML(false); $mmail->Body = $this->fields['body_text'];
Question bête mais ce bout de code s'insère où ? Je suis très fortement intéressé car même souci
Offline
Bonjour à tous!
j'ai également ce soucis de pièces jointes.
j'aimerais savoir où s'insère ce code s'il vous plait.
merci!
Offline
Bonjour,
Cette solution a-t-elle été testée sur la V 0.90.5 ? Car quand j'intègre ce code dans mon fichier queuedmail.class.php l'action auto ne se lance pas et j'ai des message d'erreur concernant la fonction "query" ou "DB".
Edit : Ne pas tenir compte de ce post, Je n'avais pas ajouté la variable globale $DB dans la ligne "global $CFG_GLPI, $DB;". Désormais les envois des documents en PJ fonctionnent.
Last edited by Kyushin49 (2016-09-05 09:30:22)
Offline
Bonjour à tous;
excusez moi encore parce que je deviens lourd à cause de ce sujet.
je suis sur la version de glpi 0.90.3
s'il vous plait le code php écrit ici plus haut il doit remplace l'intégralité du fichier queuedmail.class.php? si oui est ce la seule action à effectuer pour régler ce problème de pièces jointes dans les suivis?
merci d'avance pour vos réponses.
Offline
Salut, il faut savoir lire dans la "matrice" ..
Dans le fichier queuedmail.class.php, tu cherche la ligne global $CFG_GLPI; (je ne connait pas le numéro de ligne, je suis en 0.90.1 et cela évolue avec les versions) et tu ajoute ,$DB
Tu obtient donc : global $CFG_GLPI, $DB;
Ensuite tu cherche la ligne qui contient $mmail->Subject = $this->fields['name'];
Tu insére le code php (sans les +)
Important, crée toi une copie de sauvegarde du fichier avant.
Bon courage,
Offline
Merci titan je teste tout de suite.
je suis pas très développement voilà pour suis un peu perdu.
Offline
Merci pour ton aide titan çà fonctionne.
on peut clôturer ce ticket.
Offline
dicka.florent vous n'êtes par l'auteur initial du ticket. Donc ce n'est pas à vous d'indiquer si ce ticket peut être clos ou pas
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
Bonjour,
Je suis en version 0.90.5, pourriez vous me dire si cette fonctionnalité a été intégrée dans les versions plus récentes ?
D'avance merci
Offline
Bonjour, avec la restructuration des classes utilisées au passage de la 9.2, je n'arrive pas à réinsérer le code ou créer une fonction le remplaçant.
Quelqu'un ayant plus de competences aurait réussi ?
Cordialement
Offline
salut
je suis en 9.1.6 et j'ai scrupuleusement suivi les conseils de tout le monde :
- modif de queedmail.class.php
--> global $CFG_GLPI, $DB;
--> puis aprés $mmail->Subject = $this->fields['name'];
j'ai ajouté ça, sans les +
Pour autant, je n'ai pas les PJ dans mes suivis par mail.
Pourriez vous m'aider svp, ça fait des mois que je cherche.
Merci
+ $lastFollowupDocument = False;
+ if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 )
+ {
+ #on est dans le cas d'un ticket
+ $lastFollowupDocument = False;
+ $ticket = new Ticket();
+ // Check if ticket exists
+ if ($ticket->getFromDB($this->fields["items_id"]))
+ {
+ # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation
+ // Get all attached documents of ticket
+ $query = "SELECT `glpi_documents_items`.`id` AS id,
+ `glpi_documents_items`.`documents_id` AS docId,
+ `glpi_documents_items`.`date_mod` AS date_mod
+ FROM `glpi_documents_items`
+ WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."'
+ AND `glpi_documents_items`.`itemtype` = 'Ticket' ";
+
+ $result = $DB->query($query);
+ $my_docs = array();
+ $dateMessage = '';
+ if ($DB->numrows($result)) {
+ while ($data = $DB->fetch_assoc($result)) {
+ if (!empty($data['id'])) {
+ $my_docs[]=$data;
+ }
+ }
+ #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments
+ if (!empty($this->fields['messageid'])) {
+ preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches);
+ $messageid_timestamp = $matches[1];
+ $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp));
+ $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S"));
+ }
+
+ $link_doc = array();
+ if (is_array($my_docs) && count($my_docs)>0) {
+ foreach ($my_docs as $the_doc) {
+ $dateDoc = new DateTime($the_doc['date_mod']);
+ if ($dateDoc > $dateMessage) {
+ $TheDoc = new Document();
+ $TheDoc->getFromDB($the_doc['docId']);
+ $lastFollowupDocument[] = $TheDoc;
+ }
+ }
+ }
+ }
+ }
+
+
+ if ($lastFollowupDocument != False )
+ {
+ foreach ($lastFollowupDocument as $doc2Send) {
+
+ $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'],
+ $doc2Send->fields['filename'],
+ 'base64',
+ $doc2Send->fields['mime']);
+ }
+
+ }
+ }
Offline
Bonjour,
nous avons migrés en version 9.5.1 et depuis les pièces jointes ne s'envoi plus dans les notifications mails ?
J'ai fait le test sur la 9.5.0 et cela fonctionne.
Y a til eu un changement ?
Offline
Pages: 1