Bonjour tout le monde,

Je recherche actuellement un script (de préférence PHP) qui est capable d'extraire les pièces jointes de mes mails présents sur un serveur OVH.
Après peu de temps de recherche, j'ai trouvé un script sur internet mais qui au final ne fonctionne pas de mon côté. J'ai tenté de comprendre son fonctionnement et y apporter quelques modifications pour réussir à le faire marcher mais en vain. Au final je n'arrive à extraire que 3 pièces jointes sur XX sans savoir pourquoi et j'obtiens plusieurs fois ces messages d'erreurs :


Code x : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Notice: Trying to get property of non-object in C:\***\**\extraction.php on line 45
Notice: Undefined offset: 2 in C:\***\**\extraction.php on line 44
Notice: Undefined offset: 2 in C:\***\**\extraction.php on line 45

Le code est le suivant :

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
<?php
 
    header("Content-Type: text/html; charset=iso-8859-15"); 
    $nom_fichier = "";
    $mail = imap_open("{pop3.****.fr:143}INBOX","monmail","monMDP");
    $nbmess = imap_num_msg($mail);
 
 
    if ($nbmess == 0) 
    { 
        echo "<div align='center'> <b>Aucun message présent sur le serveur</b><br /><br /></div>"; 
    } 
    else 
    { 
        for($j=1;$j<=$nbmess;$j++) 
        { 
            $header = imap_headerinfo($mail,$j); 
            $sujet = $header->subject;   
            $struct = imap_fetchstructure($mail,$j); 
 
            if ($struct->type == 1) 
            { 
                $nbrparts = !$struct->parts ? "1" : count($struct->parts); 
            } 
 
            $piece = array();
            for($h=1;$h<=$nbrparts;$h++) 
            { 
                $part = $struct->parts[1];                
 
                $piece = imap_fetchbody($mail,$j,$h+1); 
 
                if ($part->encoding == "3")
                {
                    $nbparam = count($part->parameters);
                    $i=0;
                    while($i<$nbparam)
                    {
                        $i++;
                        $param = $part->parameters[$i];
                        $nom_fichier = $struct->parts[$h]->dparameters[0]->value; 
                        if($nom_fichier!=null)
                        {
                            echo '&nbsp;&nbsp;&nbsp;&nbsp; Nom du fichier : '.$nom_fichier.'<br>';
                        }
                    } 
                    $piece = imap_base64($piece); 
                }  
                if($nom_fichier!=null)
                {
                    $newfichier = fopen("C:/test/".$nom_fichier,"w+"); 
                    fwrite($newfichier,$piece); 
                    fclose($newfichier);
                }
            } 
        } 
    } 
 
?>

Si quelqu'un pouvait m'aider à résoudre mon problème, et faire fonctionner ce script cela m'aiderait beaucoup.
Merci par avance.