• User Attivo •

    Backup via e-mail

    Salve raga, io ho un sito su jesolo e siccome la mia compagnia di hosting è abb traballante non vorrei trovarmi un giorno senza niente... cosi... ecco che mi son creato il mio script in php che mi backuppa il db e i file all'interno del dominio... il problema è che il backup viene effettuato una volta al giorno e messo in una cartella.. ora una volta a settimana io vorrei mandarmelo via e-mail... il problema è che mi arriva qualcosa ma quel qualcosa non è un archivio tgz .. non riesco ad aprirlo..
    Qualcuno ci ha gia provato?


  • User Attivo •

    Allora? Nessuno mi sa aiutare?


  • User Attivo •

    Prova utilizzare questa classe per inviare la mail con allegato.

    [PHP]
    <?php
    class sentMail {
    //dichiarazione delle propietà
    var $testo,$mittente,$destinatario,$oggetto,$errore,$titolo,$content,$replay,$nomeFile,$indFile,$fType,$inte;

    //metodo costruttore
    function sentMail(){        
        $this->destinatario=array();
        $this->errore=array();
        $this->content='multipart/alternative';
    }
    
    //metodo che imposta il mittende che invia la mail
    function setMittente($inMittende){
        $this->mittente=$inMittende;
    }
    
    //metodo che imposta il contenuto della mail
    function setTesto($inTesto){
        $this->testo=$inTesto;
    }
    
    //metodo che mimposta l'oggetto della mail
    function setOggetto($inOggetto){
        $this->oggetto=$inOggetto;
    }
    //metodo che imposta il nome del file
    function setNomeFile($inFile){$this->nomeFile=$inFile;}
    
    //metodo che imposta l'indirizzo del file
    function setIndFile($inFile){$this->indFile=$inFile;}
    
    //metodo che imposta il type del file
    function setFileType($inFile){$this->fType=$inFile;}
    
    //metodo che imposta la mail per la risposta
    function setReplay($inReplay){$this->replay=$inReplay;}
    
    //metodo che imposta il content delle mail
    function setContent($inCont){$this->content=$inCont;}
    
    //metodo che imposta il destinatario della mail
    function setDestinatario($inDestinatario){
        if(is_array($inDestinatario))
            $this->destinatario=$inDestinatario;
        else{
            $tmpDet=explode(',',$inDestinatario);
            $this->destinatario=$tmpDet;
        }
    }
    
    //metodo che imposta le intestazioni della mail
    function setInte($inValue){$this->inte=$inValue;}
    
    //metodo che imposta il titolo della mail
    function setTitolo($inTitolo){$this->titolo=$inTitolo;}
    
    //metodo che restitusce l'errore
    function getErrore(){return $this->errore;}
    
    //metodo che invia la mail
    function inviaMail(){
        $mess="<html><head>
        <meta http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\">
        <title>$this->titolo</title>
        $this->inte
        </head>
        <body bgColor=#ffffff link=#333333 alink=#333333 vlink=#333333>
        $this->testo
        </body></html>";
        $intestazioni = "From: $this->mittente\n";
        ($this->replay!='') ? $intestazioni.="Replay-to:".$this->replay."\n" : "\n";
        $intestazioni.="X-Mailer: Sismail Web Email Interface\nMIME-version: 1.0\nContent-type: $this->content;\n boundary=\"Message-Boundary\"\n";
        ($this->nomeFile) ? $intestazioni.="\nContent-transfer-encoding: 7BIT\nX-attachments: $this->nomeFile" : '';
        $body_top="--Message-Boundary\n";
        $body_top.="Content-type: text/html; charset=iso-8859-1\n"; 
        $body_top.="Content-transfer-encoding: 7BIT\n"; 
        $body_top.="Content-description: Mail message body\n\n";  
        $msg_body=$body_top.$mess;
        if($this->nomeFile!=''){
            $f=fopen($this->indFile,'r');
            $contenuto=fread($f,filesize($this->indFile));
            $enco_att=chunk_split(base64_encode($contenuto));
            fclose($f);
            if($this->fType!='' && $this->indFile!=''){
                $msg_body .= "\n\n--Message-Boundary\n";
                $msg_body .= "Content-type: $this->fType; name=\"$this->nomeFile\"\n";
                $msg_body .= "Content-Transfer-Encoding: BASE64\n";
                $msg_body .= "Content-disposition: attachment; filename=\"$this->nomeFile\"\n\n";
                $msg_body .= "$enco_att\n";
                $msg_body .= "--Message-Boundary--\n";
            }
        }
        foreach($this->destinatario as $tmpIndex=>$tmpValue){
            if(!mail($tmpValue,$this->oggetto,$msg_body,$intestazioni))
                return FALSE;
        }
        return TRUE;
    }
    

    }
    ?>
    [/PHP]

    Per utilizzare la classe, utilizza:

    [PHP]
    <?php

    $pntMail=new sentMail();
    $pntMail->setMittente("[email protected]");
    $pntMail->setNomeFile("nome_file");
    $pntMail->setIndFile("percorso_del_file");
    $pntMail->setDestinatario("[email protected]");
    $pntMail->setTesto("Testo della mail in formato html");
    $pntMail->setOggetto("Oggetto mail");
    $pntMail->setFileType("tipo_del_file"); //Tipo MIME - Es: "application/zip"

    if($pntMail->inviaMail())
    echo "mail inviata";
    else
    echo "mail non inviata";
    ?>
    [/PHP]

    Ciao!


  • User Attivo •

    ok domani provo grazie


  • User Newbie •

    Ho un problema con questo script PHP per l'invio delle mail con allegato.
    In pratica credo che il problema sia sul tipo di file perchè quando lo ricevo in allegato è vuoto!

    Dovrei inserire un controllo sull'estensione che mi manca, ma anche caricando un file ad esempio csv dopo aver indicato text/csv sul filetype ho lo stesso problema!!!

    Siete in grado di aiutarmi?


  • User Attivo •

    Prova ad utilizzare la funzione:

    [php]
    mime_content_type("file.ext");
    [/php]

    Ciao!