Mail in html con allegato non coesistono?

Marco Zabeo

Nuovo Utente
26 Nov 2014
2
0
0
<html>
<head>
<title>Modulo contatti</title>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body topmargin="50" margineight="50">
<table width="400" align="center">
<tr>
<td>
<?PHP
// IDENTIFICA UN POTENZIALE ERRORE
$errore = 0;


// Manda mail a
$to = $_POST['to'];

// Mittente

$from = $_POST['from'];

// Controlla ESPRESSIONE REGOLARE DELL'EMAIL
$re_1 = ereg("^[^@ ]+@[^@ ]+.+[^@ ]+$", $from);
$re_2 = ereg("^[^@ ]+@[^@ ]+.+[^@ ]+$", $to);



// RECUPERA I DATI DAL FORM

$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$indirizzo = $_POST['indirizzo'];
$citta = $_POST['citta'];
$azienda = $_POST['azienda'];
$tel = $_POST['tel'];
$fax = $_POST['fax'];






// 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: " . $from;
$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 .= $corpo . "\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 = $corpo;
}


// CONTROLLA I CAMPI
if ($nome == "") { $errore = 1; }
elseif ($re_1 == FALSE) { $errore = 2; }
elseif ($cognome == "") { $errore = 3; }
elseif ($re_2 == FALSE) { $errore = 4; }

// SE I CAMPI SONO STATI COMPILATI CORRETTAMENTE...
else
{
// FORMATTA LA MAIL





$corpo = '
<html>
<head>
</head>

<body>
<table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td colspan="2">';
$corpo .= '<br><br>';


$corpo .= '</td></tr>';
$corpo .= '<tr><td width="50%" valign="top">';
$corpo .= 'Colazione da tiffany';



$corpo .= '<br><br>';
$corpo .= '</td></tr>';
$corpo .= '</table>
</body>
</html>';


$mail_in_html .= "MIME-Version: 1.0\r\n";
$mail_in_html .= "Content-type: text/html; charset=UTF-8\r\n";
$mail_in_html .= "From: $from\r\n";
$mail_in_html .= "BCC:$to\r\n";

if (mail($to,"Imbarcazione $cantiere",$msg,$mail_in_html))

// INVIA LA MAIL CONTROLLANDO CHE L'INVIO VADA A BUON FINE
{
$errore = 0;
}
else
{
$errore = 5;
}
}


?>

<html>
<head>
<title>Invia ad un amico</title>
</head>
<body>

<p align="center">
<?PHP
switch ($errore)
{
case 0;
print "Segnalazione inviata con successo";
break;

case 1;
print "Inserisci il tuo nome";
break;

case 2;
print "Errore mail destinatario";
break;

case 3;
print "Inserisci il cognome";
break;

case 4;
print "Inserisci la tua mail";
break;

case 5;
print "Il server non è riuscito ad inviare la mail";
break;
}
?>
<br><br>
<a href="javascript:window.history.back();">Indietro</a>
</p>

</td>
</tr>
</table>

</body>
</html>
 
io uso questo e funziona

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>E-mail con tanti allegati</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
<?php
if ($_SERVER['REQUEST_METHOD']=="POST"){
   $to="[email protected]";
   $subject="E-mail con tanti allegati";
   $from = stripslashes($_POST['fromname'])."<".stripslashes($_POST['fromemail']).">";
	 $mex = stripslashes($_POST['messaggio']);
   $mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
   $headers = "From: $from\r\n" .
   "MIME-Version: 1.0\r\n" .
      "Content-Type: multipart/mixed;\r\n" .
      " boundary=\"{$mime_boundary}\"";
   $message = "This is a multi-part message in MIME format.\n\n" .
      "--{$mime_boundary}\n" .
      "Content-Type: text/html; charset=\"iso-8859-1\"\n" .
      "Content-Transfer-Encoding: 7bit\n\n" .
   $message . "<h1>{$mex}</h1>\n\n";
   foreach($_FILES as $userfile){
      $tmp_name = $userfile['tmp_name'];
      $type = $userfile['type'];
      $name = $userfile['name'];
      $size = $userfile['size'];
      if (file_exists($tmp_name)){
         if(is_uploaded_file($tmp_name)){
            $file = fopen($tmp_name,'rb');
            $data = fread($file,filesize($tmp_name));
            fclose($file);
            $data = chunk_split(base64_encode($data));
         }
         $message .= "--{$mime_boundary}\n" .
            "Content-Type: {$type};\n" .
            " name=\"{$name}\"\n" .
            "Content-Disposition: attachment;\n" .
            " filename=\"{$fileatt_name}\"\n" .
            "Content-Transfer-Encoding: base64\n\n" .
         $data . "\n\n";
      }
   }
   $message.="--{$mime_boundary}--\n";
   if (@mail($to, $subject, $message, $headers))
      echo "Messaggio Inviato";
   else
      echo "Invio Fallito";
} else {
?>
<p>Invio di email con allegati</p>
<p>e mi arriva buona !!</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" 
   enctype="multipart/form-data" id="form1">
   <p>Mittente: <input type="text" name="fromname" /></p>
   <p>Indirizzo e-mail: <input type="text" name="fromemail" /></p>
   <p>Messaggio: <textarea name="messaggio"></textarea></p>
   <p>File: <input type="file" name="file1" /></p>
   <p>File: <input type="file" name="file2" /></p>
   <p>File: <input type="file" name="file3" /></p>
   <p>File: <input type="file" name="file4" /></p>
   <p><input type="submit" name="Submit" value="Submit" /></p>
</form>
<?php } ?>
</body>
</html>
 
ciao
un paio di cose
1) la funzione ereg è deprecata, per verificare un indirizzo email convine usare
PHP:
$err=filter_var($indirizzo_email, FILTER_VALIDATE_EMAIL);//true o false
2) quando ci si fa inviare dei file e bene per sicurezza verificarne il tipo
3) usa phpmailler o simili sono più performanti
 

Discussioni simili