• 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!