- Home
- Categorie
- Coding e Sistemistica
- PHP
- Backup via e-mail
-
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?
-
Allora? Nessuno mi sa aiutare?
-
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!
-
ok domani provo grazie
-
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?
-
Prova ad utilizzare la funzione:
[php]
mime_content_type("file.ext");
[/php]Ciao!