Codice PHP:
<?php
function Invia()
{
$boundary="";
$destinatario="";
$data="";
ini_set ("display_errors", "1");
ini_set ("SAFE_MODE", "Off");
error_reporting(E_ALL);
// Valorizzo le variabili relative all'allegato
//i file caricati sono salvati all'interno di $FILES, dal q.le saranno accessibili anche altre informazioni,
//come il nome del file temporaneo: NOTA BENE: E' LEGATO AL TAG upload
$allegato_name = $_FILES['upload']['name'];
$allegato_type= $_FILES['upload']['type'];
//$allegato_tmp= $_FILES['upload']['tmp_name'];
//recupero i parametri da passare alla funzione predefinita per l'upload
$percorso=$_FILES['upload']['tmp_name'];
//$nome=$_FILES['upload']['name'];
// Lettura e scrittura per il proprietario, e nessun permesso per gli altri
chmod(".", 0600);
// Lettura e scrittura per il proprietario, e lettura per gli altri
chmod(".", 0644);
// Accesso completo per il proprietario, e lettura ed esecuzione per gli altri
chmod (".", 0755);
// Accesso completo per il proprietario, e lettura ed esecuzione per il gruppo del proprietario
chmod (".",0750);
chmod (".",0777);
if (!is_dir("tmp")){
$cartella=Mkdir("tmp","0777");
}
$cartella='tmp/';
//ESEGUO L'UPLOAD CONTROLLANDO L'ESITO
if(move_uploaded_file($percorso,$cartella.$allegato_name))
{
echo "Upload eseguito con successo";
}
else
{
echo "Si sono verificati problemi durante l'upload";
}
//read the attachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
//Apro e leggo il file allegato
$file=@fopen($allegato_name,'r'); // apro il file in lettura $miofile = fopen('leggimi.txt','r');
//$allegato_size=($allegato_name);// memorizzo in una variabile la lunghezza del file $bytes = filesize('leggimi.txt');
$data=@fread($file, filesize($allegato_name)); //// leggo il file per l'intera lunghezza -->fread($miofile, 100): leggere i primi 100bytes;
// Adatto il file al formato MIME base64 usando base64_encode
//$encoded_allegato=chunk_split(base64_encode(file_get_contents($data)));
$data=chunk_split(base64_encode($data));
//define the body of the message.
ob_start(); //Turn on output buffering
$attachment = ob_get_clean();
//DELIMITATORE
// Genero il "separatore"
// Serve per dividere, appunto, le varie parti del messaggio.
// Nel nostro caso separerà la parte testuale dall'allegato
$boundary = md5(uniqid(time()));
//Aggiungo le intestazioni necessarie per l'allegato
$headers="\nMIME-Version; 1.0\n";
$headers.="Content-Type: application/*";
$headers.="boundary=\{$boundary}\"";
$mittente="volirosa@gmail.com";
$oggetto="INVIO FATTURA $_POST[nome] $_POST[cognome]";
$headers = "From:<p>".$mittente;
//read the attachment file contents into a string,
//encode it with MIME base64,
//and split it into smaller chunks
//Apro e leggo il file allegato
// Lettura e scrittura per il proprietario, e nessun permesso per gli altri
//chmod("C:/xampp/htdocs/samtelALTERVISTA3/mur.pdf", 0600);
// Lettura e scrittura per il proprietario, e lettura per gli altri
//chmod("C:/xampp/htdocs/samtelALTERVISTA3/mur.pdf", 0644);
// Accesso completo per il proprietario, e lettura ed esecuzione per gli altri
//chmod("C:/xampp/htdocs/samtelALTERVISTA3/mur.pdf", 0755);
// Accesso completo per il proprietario, e lettura ed esecuzione per gli altri
//chmod("C:/xampp/htdocs/samtelALTERVISTA3/mur.pdf", 0777);
// Accesso completo per il proprietario, e lettura ed esecuzione per il gruppo del proprietario
//chmod("C:/xampp/htdocs/samtelALTERVISTA3/mur.pdf", 0750);
$file=@fopen($allegato_name,'rb'); // apro il file in lettura $miofile = fopen('leggimi.txt','r');
$allegato_size=($allegato_name);// memorizzo in una variabile la lunghezza del file $bytes = filesize('leggimi.txt');
$data=@fread($file, filesize($allegato_name)); //// leggo il file per l'intera lunghezza -->fread($miofile, 100): leggere i primi 100bytes;
// Adatto il file al formato MIME base64 usando base64_encode
//$encodedallegato=chunk_split(base64_encode(file_get_contents($data)));
$data=chunk_split(base64_encode($data));
//define the body of the message.
ob_start(); //Turn on output buffering
$attachment = ob_get_clean();
$messaggio = "Utente: $_POST[nome] $_POST[cognome] \n";
$messaggio.= "Indirizzo: $_POST[via] $_POST[civ] \n";
$messaggio.= "$_POST[cap] \n";
$messaggio.= "$_POST[citta] \n";
$messaggio.= "n° cellulare: $_POST[cel] \n";
$messaggio.= "telefono: $_POST[telefono] \n";
$messaggio.= "e-mail utente: $_POST[email] \n";
$messaggio.= "messaggio per l'utente: $_POST[note] \n";
//Aggiungo l'allegato al messaggio
$attachment .="MIME-Version: 1.0";
$attachment .= "--PHP-alt-$boundary\n";
$attachment .= "Content-Type: application/pdf; name=\"$allegato_name\"\n";
$attachment .= "Content-Transfer-Encoding: base64\n";
$attachment .= "Content-Disposition: attachment\n\n";
//NOTA BENE: L'INVIO DELL'ALLEGATO NON DIPENDE DA QS. RIGA QUI SOTTO!!
$attachment.="--PHP-mixed-$boundary\n";
$messaggio .= "$data\n";
$attachment .= "--PHP-mixed-$boundary\n";
$destinatario=@$_POST['email'];
if ((isset($destinatario))&($data<>null))
{
$mail_sent=@mail($destinatario,$oggetto,$data,$attachment,$messaggio);
echo $mail_sent ? "<p>Mail inviata con successo!</p>" : "Mail failed";
include "samtel.html";
}else{
echo "<p>errore</p>";
include "samtel.html";
}
@fclose($file);
rmdir("tmp");
}
?>
Vorrei chiedere anche una cosa precisa: