invio email dove sbaglio

  • Creatore Discussione Creatore Discussione andy2481
  • Data di inizio Data di inizio

andy2481

Utente Attivo
10 Dic 2012
142
0
0
Dove che sbaglio i valori ci sono email la invia ma ma in sosatanza non arriva








PHP:
<?php 
  
// Recupero il valore dei campi del form 
$nome = $_POST['nome']; 
$destinatario = $_POST['destinatario']; 
$mittente = $_POST['mittente']; 
$telefono = $_POST['telefono']; 
$messaggio = $_POST['messaggio']; 

// 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"; 

  // 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 
$imposta = ini_set("sendmail_from", "andreadinapoli2481@gmail.com");
if (!$imposta) { print "Non posso impostare sendmail_from!<br>\n"; }
if (mail($destinatario,  $telefono, $msg, $headers)) 
{ 
  echo "<p>Mail inviata con successo!</p>"; 
}else{ 
  echo "<p>Errore!</p>"; 
} 
?>

<br><center><a href="javascript: history.back()">torna indietro</a></center>



Form
HTML:
<form action="formmail.php" method="POST" >
<input type="hidden" name="destinatario" value="andreadinapoli2481@gmail.com">
<table border="0" cellspacing="5" cellpadding="5">
<tr>
<td>Cognome e Nome:</td><td><input type="text" name="nome" size="40" maxlength="40" value=""></td>
</tr><tr>
<td>E-mail:</td><td><input type="text" name="mittente" size="40" maxlength="40" value=""></td>
</tr><tr>
<td>Telefono:</td><td><input type="text" name="Telefono" size="40" maxlength="40" value=""></td>
</tr><tr>
<td valign="middle">Inserisca<br>il suo <br>desiderio</td>
<td><textarea name="messaggio" rows="8" cols="40"></textarea></td></tr>
* <td>Documentazzione:</td>
* <td><input type="file" name="allegato" /></td>
</tr><tr><tr><td></td><td><input type=submit value="Invia i Dati"><input type=reset value="Annulla"></td></tr>
</table>
</form>
 
Ultima modifica:
Nell'INPUT "Invia i dati" e "Reset" non hai messo i doppi apici nell'attributo TYPE (forse è quello che rompe).
Poi la variabile destinatario è visibile nel sorgente della pagina nel modo come lo hai scritto tu, dichiarala invece dentro il file PHP almeno oltre che essere invisibile, puoi anche cambiarla con la certezza che nessuno ha fatto affidamento a quella che si legge nel sorgente visto che non c'è, e sei raggiungibile lo stesso tramite la form, è utile anche per limitare lo spam diretto.
Controlla e riprova.
 

Discussioni simili