ho realizzato una form che oltre ai dati dell'utente carica un'immagine da spedire... questo è il codice della pagina PHP:
Funziona tutto, l'unico problema è che l'allegato che ho è un'immagine dello stesso peso dell'originale ma ad una dimensio di 160px per lato... come mai???
Codice:
<?php
$to = "[email protected]";
$subject = "Oggetto";
// INTESTAZIONI SUPPLEMENTARI
$headers = "From: ";
$headers .= "Content-Type: text/html; charset=iso-8859-1\n";
// RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0
if(!isset($_POST)) $_POST = $HTTP_POST_VARS;
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
// RIPULIAMO I VARI CAMPI DEL MODULO
$rsoc = trim($_POST["rsoc"]);
$nome = trim(stripslashes($_POST["nome"]));
$cognome = trim(stripslashes($_POST["cognome"]));
$via = trim(stripslashes($_POST["via"]));
$n = trim(stripslashes($_POST["n"]));
$citta = trim(stripslashes($_POST["citta"]));
$prov = trim(stripslashes($_POST["prov"]));
$cap = trim(stripslashes($_POST["cap"]));
$tel = trim(stripslashes($_POST["tel"]));
$mail = trim(stripslashes($_POST["mail"]));
$agente = trim(stripslashes($_POST["agente"]));
// ASSEGNIAMO A VARIABILI PIU' LEGGIBILI, LE PROPRIETA' DELL'ALLEGATO
$attach = $_FILES["allegato"]["tmp_name"];
$file_name = $_FILES["allegato"]["name"];
$file_type = $_FILES["allegato"]["type"];
$file_size = $_FILES["allegato"]["size"];
// DELIMITATORE
$boundary = md5(uniqid(microtime()));
// APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
$file = @fopen($attach, "r");
$contents = @fread($file, $file_size);
$encoded_attach = chunk_split(base64_encode($contents));
@fclose($file);
// INTESTAZIONI DELLA MAIL
$mail_headers = "From: ";
$mail_headers .= "MIME-version: 1.0\n";
$mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
$mail_headers .= "X-attachments: $file_name\n";
// COSTRUIAMO IL CORPO DELLA MAIL
$mail_body = "--$boundary\n";
$mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
$mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
$mail_body .= "Ragione Sociale: $rsoc\n";
$mail_body .= "Nome: $nome\n";
$mail_body .= "Cognome: $cognome\n";
$mail_body .= "Via: $via $n\n";
$mail_body .= "Citta: $citta ($prov), $cap\n";
$mail_body .= "Telefono: $tel\n";
$mail_body .= "E-Mail: $mail\n";
$mail_body .= "Nome Agente: $agente\n\n";
$mail_body .= "--$boundary\n";
$mail_body .= "Content-type: $file_type; name=\"$file_name\"\n";
$mail_body .= "Content-Transfer-Encoding: base64\n";
$mail_body .= "$encoded_attach\n";
$mail_body .= "--$boundary--\n";
// INVIO DELLA MAIL
if(@mail($to, $subject, $mail_body, $mail_headers)) { // SE L'INVIO È ANDATO A BUON FINE...
echo "La mail è stata inoltrata con successo.";
mail($_POST["mail"],$subject, $mail_body, $mail_headers);
} else {// ALTRIMENTI...
echo "Si sono verificati dei problemi nell'invio della mail.";
echo "<a href='form.html'>riprova</a>";
}
?>
Funziona tutto, l'unico problema è che l'allegato che ho è un'immagine dello stesso peso dell'originale ma ad una dimensio di 160px per lato... come mai???