ciao a tutti seguendo un po di guide ho creato una form da mandare ad un email con la possibilità di allegare un file.
ho solo un problema che quando il file non è txt non parte quasi mai. al contrario se invio un txt arriva sempre.
mi potete aiutare fare qualche accorgimento al codice?
Grazie
Andrea
ecco l'html
php
ho solo un problema che quando il file non è txt non parte quasi mai. al contrario se invio un txt arriva sempre.
mi potete aiutare fare qualche accorgimento al codice?
Grazie
Andrea
ecco l'html
Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Form invio email</title>
<style type="text/css">
body {
background-image: url(/it/sfondoform.PNG);
background-repeat: repeat;
color: #ffffff;
font-family: Verdana, sans-serif;
font-size: 14px;
}
#form {
width: 450px;
margin: 0px auto;
background: #222;
padding: 25px;
overflow: hidden;
-moz-border-radius: 0px;
-webkit-border-radius: 20px;
border-radius: 30px;
}
h1 {
font-size: 12px;
color: #FCCC69;
margin-bottom: 5px;
text-align:center;
}
label, input, textarea { /* Stili comuni agli elementi del form */
color: #dedede; /* Colore del testo */
float: left; /* Float a sinistra */
font-family: Verdana, sans-serif; /* Tipo di carattere per il testo */
margin: 5px 0; /* Margini */
border-radius: 5px;
}
label { /* Stili per la label */
display: block; /* Impostiamo la label come elemento blocco */
line-height: 20px; /* Altezza di riga */
width: 150px; /* Larghezza */
}
input, textarea { /* Stili per il campo di testo e per la textarea */
background: #2C4DE9; /* Colore di sfondo */
border: 3px solid #ffffff; /* Bordo */
color: #fff; /* Colore del testo */
height: 25px; /* Altezza */
line-height: 25px; /* Altezza di riga */
width: 200px; /* Larghezza */
padding: 0px 5px; /* Padding */
}
input { padding-left: 10px;
textarea { /* Stili specifici per la teaxtarea */
background: #1C1C1C; /* Sfondo */
font-size: 14px;
height: 200px;
width: 320px;
overflow: hidden; /* disabilitare la scrollbar in IE */
}
</style>
</head>
<body>
<form name="mailform" action="formmail.php" method="POST" enctype="multipart/form-data">
<div id="form">
<h1>Compila il form sottostante per candidarti<br /><br />
*Campi obbligatori</h1>
<input type="hidden" name="destinatario" value="[email protected]">
<table border="0">
<tr>
<td><label>Tua Mail*</label></td>
<td><input type="text" name="mittente" value="" /></td>
</tr>
<tr>
<td><label>Oggetto*</label></td>
<td><input type="text" name="oggetto" value="" /></td>
</tr>
<tr>
<td><label>Nome*</label></td>
<td><input type="text" name="nome" /><br /></td>
</tr>
<tr>
<td><label>Cognome*</label></td>
<td><input type="text" name="cognome" /><br /></td>
</tr>
<tr>
<td><label>Data di nascita*</label> </td>
<td><input type="text" name="datanasc" value="gg/mm/aaaa" /><br /></td>
</tr>
<tr>
<td><label>Sesso*</label> </td>
<td><input type="text" name="sesso" value="M/F" /><br /></td>
</tr>
<tr>
<td><label>Codice fiscale*</label></td>
<td><input type="text" name="codfisc" /><br /></td>
</tr>
<tr>
<td><label>Città*</label></td>
<td><input type="text" name="citta" /><br /></td>
</tr>
<tr>
<td><label>Indirizzo*</label></td>
<td><input type="text" name="indirizzo" /><br /></td>
</tr>
<tr>
<td><label>Cap*</label></td>
<td><input type="text" name="cap" /><br /></td>
</tr>
<tr>
<td><label>Telefono*</label></td>
<td><input type="text" name="telefono" /><br /></td>
</tr>
<tr>
<td><label>Messaggio</label></td>
<td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
</tr>
<tr>
<td><label>Allega file</label></td>
<td><input type="file" name="allegato" /></td>
</tr>
<tr>
<td><label><a href="/Home/lavora%20con%20noi/condizioni.html" target="_blank" >Privacy</a></label></td>
<td> <input name="privacy" type="checkbox" value="html" checked="checked" /></td>
</tr>
<tr>
<td> <input type="submit" name="Submit" value="Invia!" /></td>
<td> <input type="reset" name="Submit2" value="Cancella" /></td>
</tr>
</table>
</div
</form>
</body>
</html>
php
Codice:
<?php
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$mittente = $_POST['mittente'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];
$nome=$_POST['nome'];
$cognome=$_POST['cognome'];
$datanasc=$_POST['datanasc'];
$sesso=$_POST['sesso'];
$codfisc=$_POST['codfisc'];
$citta=$_POST['citta'];
$indirizzo=$_POST['indirizzo'];
$cap=$_POST['cap'];
$telefono=$_POST['telefono'];
$privacy=$_POST['privacy'];
$Submit=$_POST['Submit'];
// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mittente;
$msg = "";
// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($allegato))
{
// Apro e leggo il file allegato
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);
// Adatto il file al formato MIME base64 usando base64_encode
$data = chunk_split(base64_encode($data));
// Genero il "separatore"
// Serve per dividere, appunto, le varie parti del messaggio.
// Nel nostro caso separerà la parte testuale dall'allegato
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
// Aggiungo le intestazioni necessarie per l'allegato
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " boundary=\"{$mime_boundary}\"";
// Definisco il tipo di messaggio (MIME/multi-part)
$msg .= "This is a multi-part message in MIME format.\n\n";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Questa è la parte "testuale" del messaggio
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $messaggio . "\n\n";
$msg .= $nome . "\n\n";
$msg .= $cognome . "\n\n";
$msg .= $datanasc . "\n\n";
$msg .= $sesso . "\n\n";
$msg .= $codfisc . "\n\n";
$msg .= $citta . "\n\n";
$msg .= $indirizzo . "\n\n";
$msg .= $cap . "\n\n";
$msg .= $telefono . "\n\n";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Aggiungo l'allegato al messaggio
$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename=\"{$allegato_name}\"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";
// chiudo con il separatore
$msg .= "--{$mime_boundary}--\n";
}
else
{
$msg = $messaggio;
}
// Invio la mail
if (mail($destinatario, $oggetto, $msg, $headers))
{
echo "<p>Mail inviata con successo!</p>";
}else{
echo "<p>Errore!</p>";
}
?>