Bonjour,
Je me permet de vous écrire car j'ai cherché une solution à mon problème sur le forum mais je n'ai rien trouvé.
Effectivement, j'ai mis en place GestSup depuis un moment pour effectuer des tests, je viens de constater que les demandeurs nous envoyait des mails concernant leurs demandes avec des pièces jointes.
Ces pièces jointes, je ne les retrouve pas dans le ticket. Je voulais savoir s'il s'agissait d'un problème de configuration ou si le logiciel ne le permettait pas ?
Par contre, lorsque j'upload un fichier dans un ticket, je le retrouve bien par la suite. S'il s'agit d'un problème de configuration, pouvez-vous m'indiquer la marche à suivre pour remédier à ce problème ? Cela fait plusieurs heures que je recherche une solution pour résoudre ce problème en vain.
En attente de votre réponse,
Alexandre
Pièce jointe des demandeurs
Bonjour,
Je viens de modifier mail2ticket.php
Si vous voulez vous en insprirer (attention, il y a d'autres modifs dedans ..)
Pour la récupération des pièces jointes : ligne 43 : fonctione extract_attachments
et ligne 171
Je viens de modifier mail2ticket.php
Si vous voulez vous en insprirer (attention, il y a d'autres modifs dedans ..)
Pour la récupération des pièces jointes : ligne 43 : fonctione extract_attachments
et ligne 171
Code : Tout sélectionner
<?php
################################################################################
# @Name : mail2ticket.php
# @Desc : convert mail in ticket
# @call : /index_auth.php
# @paramters :
# @Autor : Flox
# @Create : 07/04/2013
# @Update : 16/07/2014
# @Version : 3.0.10
################################################################################
//initialize counter
$count=0;
//connexion script with database parameters
require "connect.php";
//define current time
$datetime = date("Y-m-d H:i:s");
//load parameters table
$qparameters = mysql_query("SELECT * FROM `tparameters`");
$rparameters= mysql_fetch_array($qparameters);
//hostname building
//$hostname = '{'.$rparameters['imap_server'].':'.$rparameters['imap_port'].'}'.$rparameters['imap_inbox'].'';
$hostname = '{'.$rparameters['imap_server'].':'.$rparameters['imap_port'].'}'.$rparameters['imap_inbox'].'';
//connect to inbox
//default case
//$inbox = imap_open($hostname,$rparameters['imap_user'],$rparameters['imap_password']) or die('Impossible de se connecter au serveur de Messagerie: ' . imap_last_error());
//$inbox = imap_open($hostname/novalidate-cert,$rparameters['imap_user'],$rparameters['imap_password']) or die('Impossible de se connecter au serveur de Messagerie: ' . imap_last_error());
$inbox = imap_open("{xxxxxxxxx/imap/novalidate-cert}",$rparameters['imap_user'],$rparameters['imap_password']) or die('Impossible de se connecter au serveur de Messagerie: ' . imap_last_error());
// Exchange 2010
//echo $rparameters['imap_port'] ;
//$inbox = imap_open('{'.$rparameters['imap_server'].':'.$rparameters['imap_port'].'/pop3/novalidate-cert}'.$rparameters['imap_inbox'].'', $rparameters['imap_user'], $rparameters['imap_password'],NULL,1,array('DISABLE_AUTHENTICATOR'=>'GSSAPI')) or die('Impossible de se connecter au serveur de Messagerie: ' . imap_last_error());
// Fonction attach :
function extract_attachments($connection, $message_number) {
$attachments = array();
$structure = imap_fetchstructure($connection, $message_number);
if(isset($structure->parts) && count($structure->parts)) {
for($i = 0; $i < count($structure->parts); $i++) {
$attachments[$i] = array(
'is_attachment' => false,
'filename' => '',
'name' => '',
'attachment' => ''
);
if($structure->parts[$i]->ifdparameters) {
foreach($structure->parts[$i]->dparameters as $object) {
if(strtolower($object->attribute) == 'filename') {
$attachments[$i]['is_attachment'] = true;
$attachments[$i]['filename'] = $object->value;
}
}
}
if($structure->parts[$i]->ifparameters) {
foreach($structure->parts[$i]->parameters as $object) {
if(strtolower($object->attribute) == 'name') {
$attachments[$i]['is_attachment'] = true;
$attachments[$i]['name'] = $object->value;
}
}
}
if($attachments[$i]['is_attachment']) {
$attachments[$i]['attachment'] = imap_fetchbody($connection, $message_number, $i+1);
if($structure->parts[$i]->encoding == 3) { // 3 = BASE64
$attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
}
elseif($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE
$attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
}
}
}
}
return $attachments;
}
// EOL Attach
//display header
echo'
<html lang="fr">
<head>
<meta charset="UTF-8" />
</head>
';
if($inbox)
{
//grab mail
echo "<u></u>Connexion à la boite au lettre en cours: <font color=green>ok</font><br /><br />";
$emails = imap_search($inbox,'ALL');
//if emails are returned
if($emails) {
//for every email...
foreach($emails as $email_number) {
//get information specific to this email
$overview = imap_fetch_overview($inbox, $email_number, 0);
$seen=$overview[0]->seen;
//if message is not read
if ($seen==0)
{
$count=$count+1;
//get mail data
$message = imap_fetchbody($inbox, $email_number, 1);
//$fileatt = imap_fetchbody($inbox, $email_number, 2);
$header = imap_headerinfo($inbox, $email_number);
$subject = $overview[0] -> subject;
$from = $header->from[0]->mailbox . "@" . $header->from[0]->host;
//special char convert
$message=quoted_printable_decode($message);
$subject=mb_decode_mimeheader($subject);
$subject = str_replace('_', ' ', $subject);
//Escape special char to SQL query
$message=mysql_real_escape_string($message);
$subject=mysql_real_escape_string($subject);
//find gestsup userid from mail address
$query= mysql_query("SELECT id FROM `tusers` where mail='$from' ");
$row=mysql_fetch_array($query);
if($row[0])
{
$user_id=$row[0];
} else {
$user_id='';
//add GMO : create user
$salt = substr(md5(uniqid(rand(), true)), 0, 5); // Generate a random key
$password=md5($salt . md5('xxxxxxxx')); // store in md5, md5 password + salt
$requete = "INSERT INTO tusers (lastname,password,salt,mail,profile,login) VALUES ('$from','$password','$salt','$from','2','$from')";
$execution = mysql_query($requete) or die('Erreur SQL !<br /><br />'.mysql_error());
$query1= mysql_query("SELECT id FROM `tusers` where mail='$from' ");
$row1=mysql_fetch_array($query1);
if($row1[0])
{
$user_id=$row1[0];
}
//
$message='De '.$from.':\n'.$message;
}
// create ticket
$query= "INSERT INTO tincidents
(user,technician,title,description,date_create,techread,state,criticality,disable)
VALUES
('$user_id','0','$subject', '$message','$datetime','0','5','4','0')";
$exec = mysql_query($query) or die('Erreur SQL !<br />'.mysql_error());
$id_ticket=mysql_insert_id();
$attachement = extract_attachments($inbox,$email_number);
echo $id_ticket;
echo " > Import du message $count: $subject: <font color=green>ok</font><br />";
$img='0';
foreach ($attachement as &$attachement) {
echo $attachement['is_attachment'].'<br>';
echo $attachement['filename'].'<br>';
$filenameSQL=$attachement['filename'];
if ($filenameSQL != '') {
echo $attachement['name'].'<br>';
//echo $attachement['attachment'];
mkdir("./upload/".$id_ticket);
echo 'Le répertoire ./upload/'.$id_ticket.' vient d\'être créé!<br>';
$myfile = fopen("./upload/".$id_ticket."/".$attachement['filename'], "x");// or die("Unable to open file!");
fwrite($myfile, $attachement['attachment']);
fclose($myfile);
//echo $filenameSQL.'<br>';
$imgtext='img'.$img;
echo $imgtext.'<br>';
$requete = "UPDATE tincidents SET $imgtext = '$filenameSQL' WHERE id = '$id_ticket'";
//$requete = "UPDATE tusers set disable=1 WHERE id = '$_GET[id]'";
echo $requete.'<br>';
$execution = mysql_query($requete) or die('Erreur SQL !<br /><br />'.mysql_error());
}
$img=$img+1;
}
}
}
}
imap_close($inbox);
echo "<br />Total: Récupération de $count messages depuis <b>$rparameters[imap_server]</b> depuis le port <b>$rparameters[imap_port]</b><br />";
} else {
echo "Erreur de connexion IMAP";
}
echo '</html>';
?>
Bonjour,
tout d'abord merci pour ce partage.
est ce qu'il y a une modification à faire autre sur le chmod des dossiers car la pièce jointe est indiqué dans le ticket, mais elle n'est pas présente sur le serveur.
Egalement, j'ai remarqué que dans votre fichier, le compte utilisateur de créé en automatique.
est ce qu'il y a un moyen d'envoyer automatiquement un mot de passe et le login à l'utilisateur à ce moment là ?
merci de votre aide.
tout d'abord merci pour ce partage.
est ce qu'il y a une modification à faire autre sur le chmod des dossiers car la pièce jointe est indiqué dans le ticket, mais elle n'est pas présente sur le serveur.
Egalement, j'ai remarqué que dans votre fichier, le compte utilisateur de créé en automatique.
est ce qu'il y a un moyen d'envoyer automatiquement un mot de passe et le login à l'utilisateur à ce moment là ?
merci de votre aide.
Planethosteur VPS LEVEL4 - 60Go - 4Go ram - 4 COEURS - CENTOS 6
-
- Gsup LEVEL 1
- Messages : 21
- Enregistré le : ven. 29 août 2014 11:41
Bonjour,
Merci GMo pour le partage cependant lorsque j’exécute le fichier via le planificateur de tâche, la p-j ne s'enregistre pas dans le dossier upload (le dossier "N° de ticket" ne ce crée pas) alors que quand je passe par l'interface Web (Administration > Paramètres > Connecteurs > "Lancer la récupération de messages") la p-j s'enregistre bien dans upload (dans le dossier bon dossier)
Pour Info : j’exécute le tâche avec les autorisations maximales.
Merci pour ton aide
Merci GMo pour le partage cependant lorsque j’exécute le fichier via le planificateur de tâche, la p-j ne s'enregistre pas dans le dossier upload (le dossier "N° de ticket" ne ce crée pas) alors que quand je passe par l'interface Web (Administration > Paramètres > Connecteurs > "Lancer la récupération de messages") la p-j s'enregistre bien dans upload (dans le dossier bon dossier)
Pour Info : j’exécute le tâche avec les autorisations maximales.
Merci pour ton aide
WAMP 2.5 | Apache 2.4.9 | PHP 5.5.12 | MYSQL 5.6.17 | GestSup 3.0.10
Bonjour,ServiceInfo-Guesneau a écrit :Bonjour,
Merci GMo pour le partage cependant lorsque j’exécute le fichier via le planificateur de tâche, la p-j ne s'enregistre pas dans le dossier upload (le dossier "N° de ticket" ne ce crée pas) alors que quand je passe par l'interface Web (Administration > Paramètres > Connecteurs > "Lancer la récupération de messages") la p-j s'enregistre bien dans upload (dans le dossier bon dossier)
Pour Info : j’exécute le tâche avec les autorisations maximales.
Merci pour ton aide
c'est un problème d'installation de gestsup, j'ai le même problème deux fois sur 3 install différentes.
Planethosteur VPS LEVEL4 - 60Go - 4Go ram - 4 COEURS - CENTOS 6
-
- Gsup LEVEL 0
- Messages : 4
- Enregistré le : ven. 13 févr. 2015 11:30
Bonjour,
c'est un peu tard peut être ; c'est un problème de droits sur le répertoire "upload".
J'en ai un peu galéré ;
il fat attribué les droits 777 au répertoire "upload" afin que l'applicatif puisse écriture dans le répertoire.
Aucune modification n'a été faite sur le code.
ça pourra aider bcp j'en suis sûr.
Pour faire plus simple , j'ai donné les droits 777 à tous mes fichiers et répertoire pour ne avoir de surprise plus tard.
c'est un peu tard peut être ; c'est un problème de droits sur le répertoire "upload".
J'en ai un peu galéré ;
il fat attribué les droits 777 au répertoire "upload" afin que l'applicatif puisse écriture dans le répertoire.
Aucune modification n'a été faite sur le code.
ça pourra aider bcp j'en suis sûr.
Pour faire plus simple , j'ai donné les droits 777 à tous mes fichiers et répertoire pour ne avoir de surprise plus tard.
CentOS release 6.5 | Apache 2.2.15 | Mysql 5.1.73 | PHP 5.3.3
-
- Gsup LEVEL 1
- Messages : 21
- Enregistré le : ven. 29 août 2014 11:41
Merci pour la réponse, sauf que je suis sur un environnement Windows. Même en donnant tous les droits au groupe "Tout le monde" cela ne fonctionne pas. dommagelebourgeois a écrit :Bonjour,
c'est un peu tard peut être ; c'est un problème de droits sur le répertoire "upload".
J'en ai un peu galéré ;
il fat attribué les droits 777 au répertoire "upload" afin que l'applicatif puisse écriture dans le répertoire.
Aucune modification n'a été faite sur le code.
ça pourra aider bcp j'en suis sûr.
Pour faire plus simple , j'ai donné les droits 777 à tous mes fichiers et répertoire pour ne avoir de surprise plus tard.
Solution de contournement : j’exécute mon script php dans un navigateur
WAMP 2.5 | Apache 2.4.9 | PHP 5.5.12 | MYSQL 5.6.17 | GestSup 3.0.10