Bonjour a tous,

Je me suis rendu sur divers tuto y compris sur developpez.com pour tenter de créer un WEBMAIL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
 
$server=$extranet_serveur;
$username=$MB_mail;
$password=$MB_mail_mdp;
 
$mbox = imap_open($server , $username, $password);
 
$uid = $_GET['uid'];
if ($uid>0){
	$headerText = imap_fetchHeader($mbox, $uid, FT_UID);
        $header = imap_rfc822_parse_headers($headerText);
        $corps = imap_fetchbody($mbox, $uid, 1, FT_UID);
}
 
 
$client=@$_GET['client'];
header('Content-Type: text/html; charset=UTF-8');
extract($_POST);
 
 
 
function get_attachments($content, $part = null, $skip_parts = false) {
    static $results;
 
    if (is_null($part)) {
        $results = array();
    }
    else {
        if (substr($part, 0, 1) == '.') {
            $part = substr($part, 1);
        }
    }
 
    $actualpart = $part;
    $split = explode('.', $actualpart);
 
    if (is_array($skip_parts)) {
        foreach ($skip_parts as $p) {
            array_splice($split, $p, 1);
        }
        $actualpart = implode('.', $split);
    }
    if (strtolower($content->subtype) == 'rfc822') {
        if (!is_array($skip_parts)) {
            $skip_parts = array();
        }
        // Adding this part into the skip list
        array_push($skip_parts, count($split));
    }
 
    if (isset($content->ifdparameters) && $content->ifdparameters == 1 && isset($content->dparameters) && is_array($content->dparameters)) {
        foreach ($content->dparameters as $object) {
            if (isset($object->attribute) && preg_match('~filename~i', $object->attribute)) {
                $results[] = array(
                'type'          => (isset($content->subtype)) ? $content->subtype : '',
                'encoding'      => $content->encoding,
                'part'          => empty($actualpart) ? 1 : $actualpart,
                'filename'      => $object->value
                );
            }
        }
    }
 
    else if (isset($content->ifparameters) && $content->ifparameters == 1 && isset($content->parameters) && is_array($content->parameters)) {
        foreach ($content->parameters as $object) {
            if (isset($object->attribute) && preg_match('~name~i', $object->attribute)) {
                $results[] = array(
                'type'          => (isset($content->subtype)) ? $content->subtype : '',
                'encoding'      => $content->encoding,
                'part'          => empty($actualpart) ? 1 : $actualpart,
                'filename'      => $object->value
                );
            }
        }
    }
 
    if (isset($content->parts) && count($content->parts) > 0) {
        foreach ($content->parts as $key => $parts) {
            get_attachments($parts, ($part.'.'.($key + 1)), $skip_parts);
        }
    }
    return $results;
}
 
 
//A partir de la je bloque car je ne veux pas telecharger automatiquement les pieces jointes dans un dossier temporaire du style : $export_dir ="/jointes/";
// Je voudrais afficher un icone pour telecharger ou je veux la pièce jointe. Genre une image avec un lien tout telecharger qui me permette de choisir dans un champ un ID ou un dossier de destination
// mais je ne sais meme pas recuperer la piece jointe pour commencer
 
 
$mbox = imap_open ($server , $username, $password);
$num = imap_num_msg($mbox);
 
 
 
//// suite de l'extrait de mon code :
<div class="panel panel-default"><div class="panel-heading"><i class="fa fa-envelope-o"></i>Boite de Reception<div class="panel-tools"><a class="btn btn-xs btn-link panel-collapse collapses" href="#"></a></div></div>
   <div class="panel-body messages">
		<ul class="messages-list">
		         <?php
				if($num==0){echo "<i>Aucun mail sur le serveur</i>";}
				else
				{     
					for($i=1;$i<=$num;$i++)
					{
						$header = imap_headerinfo($mbox, $i);
					        $datetime = $header->date; // L'heure du message
						$datetime=strtotime($datetime);
						$datetime = date("d-m-Y H:i", $datetime);
						$subject = $header->subject; // Le sujet
						$messageid = $header->message_id; // L'id du message
						$toaddress = $header->toaddress; // Adresse de réception
						$fromaddress = $header->fromaddress; // Expéditeur
						$recent = $header->Recent; // Message récent -> O (oui)  N (non)
						$size = $header->Size; // Taille du mail
						$numeromail = $header->Msgno; // Numéro du mail
						$numeromail = str_replace(" ","", $numeromail);
						$fromemail = '{'.$header->from[0]->mbox.'@'.$header->from[0]->host.'}';
						$subject = str_replace("_"," ", mb_decode_mimeheader($subject));
						$subject = trim(substr(quoted_printable_decode($subject), 0,500000));
						 echo '<li class="messages-item">'.$fromaddress.'<a href="messagerie.php?uid='.$numeromail.'" style="text-decoration:none"><span class="messages-item-preview">'.$datetime.'<br>-> <strong>'.$subject.' </strong></span></a></li>';
					}
				}
?>                                       
		</ul>
<?php
if ($uid>0)
{
	$from=$header->from;
        echo '
		<div class="messages-content">
			<div class="message-header">
				<div class="message-time">->';
				   	$datefrom = $header->date; $datefrom=strtotime($datefrom); $datefrom = date("d-m-Y H:i", $datefrom);
					echo $datefrom.'<br></div>
				<div class="message-from"><span style="font-weight:normal">De </span> '.$from[0]->personal.' <span style="font-weight:normal">('.$from[0]->mailbox."@".$from[0]->host.')</span></div>
				<div class="message-subject">';
					$subject = $header->subject;
					$subject = str_replace("_"," ", mb_decode_mimeheader($subject));
					$subject = trim(substr(quoted_printable_decode($subject), 0,500000));
				echo $subject.'</div>
									
				<div class="message-actions"><a title="Envoyer un autre message" href="messagerie.php?uid='.$uid.'&admail='.$from[0]->mailbox."@".$from[0]->host.'"><i class="fa fa-reply"></i></a></div>
			</div>
			<div class="message-content">
				<p>'.$corps.'</p>
			</div>
		</div>';
}
?>
</div>

Sauf que je bloque sur la partie rechargement des pieces jointes.

En fait j'ai une base de données qui contient des clients
A chaque fois que je reçois un email, je dois comparer si l'email existe dans ma BDD et dans ce cas proposer que la piece jointe soit telecharger manuellement dans un espace disque de l'hebergement WEB dédié l'iD du client.. si l'email n'existe pas ou qu'il ne correspond pas a une fiche client, par exemple parce que le client m'envoi ce mail a partir d'une adresse differente de son enregistrement dans la fiche d'infos, j'ai un champs qui me permet de rechercher le nom du client et cela affiche le ID de la fiche.


Espace dédié au client : OK
Script qui affiche la liste client : OK
Script qui recherche l'existence du client en fonction de son email : OK

Mais ce que je n'arrive pas a faire c'est afficher une sorte de trombone (tout telecharger) qui m'indique qu'il y a une ou plusieurs pieces jointes dans le mail et qui me permette de cliquer dessus pour faire agir un script de telechargement.


Merci pour toute votre aide et excellente semaine a vous.