Newsgroup: it.comp.www.php
Titolo: Salvare allegati delle email sul server

Ciao a tutti, avrei bisogno di creare uno script che mi scarichi la posta da
una casella email, mi salvi gli allegati dei messaggi (txt) in una cartella
per poi elaborarli.
Ho cercato in giro ma non ho trovato poche informazioni e poco chiare.
Finora sono riuscito a collegarmi alla casella email, leggere il numero di
messagi e leggere il singolo mail ma non ho capito come salvare l'allegato
in una cartella.
Come posso fare?
Grazie.

 ha detto:

Sei riuscito ad aprire l'allegato?
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it

 
No, quello che non so' fare e' salvare l'allegato in una cartella.

No, quello che non so' fare e' salvare l'allegato in una cartella.
Si ma prima di salvarlo devi aprirlo in lettura, ci sei riuscito
almeno questo o no?


 
No, non so' come fare :(.

Per il momento ho fatto quanto segue:
$serverposta="xxx";
$userposta="xxx";
$passwordposta="xxx";
if ($inbox=@imap_open("{".$serverposta."/pop3:110}INBOX" , $userposta
$passwordposta)){
        $total_messages=imap_num_msg($inbox);
        echo "Numero Messaggi $total_messages\n\n";
        echo "\n";
        for ($i=$total_messages;$i>0; $i--){
                echo "Messaggio $i\n\n";
                $intestazione=imap_header($inbox,$i);
                $struttura=imap_fetchstructure($inbox,$i);
                $check=imap_mailboxmsginfo($inbox);
                $mittente=eregi_replace("[<>]",""
$intestazione->fromaddress);
                $oggetto=$intestazione->subject;
                $dimensione=($struttura->bytes/1024);
                $numero=count($struttura->parts);
 
                echo "Mittente $mittente\n";
                echo "Ogetto $oggetto\n";
                echo "Dimensione $dimensione\n";
                echo "Numero $numero\n";
                echo "Allegati $att\n";
                for ($r=0;$r<$numero;$r++){
                        echo "Struttra Part $r Type =";
                        echo $struttura->parts[$r]->type;
                        echo "\n";
                        echo "Struttra Descrizione $r = ";
                        echo $struttura->parts[$r]->description;
                        echo "\n";
                }
                echo imap_body($inbox,$i);
        }
}
imap_close($inbox);
E così riesco a leggere il messaggio.
Ora come posso fare per:
1) Sapere se ci sono allegati.
2) Se c'e' un'allegato TXT salvarlo su in una cartella sul server.
Ho provato la seguente funzione:
function getAttachments($mbox,$msgNum){
        $structure = imap_fetchstructure($mbox,$msgNum);
        $contentParts = count($structure->parts);
        if($contentParts > 1){
                for($i=1; $i<=$contentParts; $i++){
                        if($structure->parts[$i]->type > 0){
                                $attachments .=
$structure->parts[$i]->description;
                        }
                }
        }
        return $attachments;
return $attachments;
}
Ma nn mi ritorna niente.
Grazie.

No, non so' come fare :(.
Sul manuale trovi numerosi esempi per la lettura di allegati:
http://it2.php.net/manual/it/function.imap-fetchstructure.php
