Mail con allegato in php non restituisce Testo HTML
Ho un problema con l'invio di una mail con allegato, nel senso che vorrei che mi restituisse oltre al file allegato anche del testo in html e invece arriva con del testo puro dove si vedono i tag html.
Questo è il codice in questione.
Codice PHP:
<?php
// Recupero il valore dei campi del form
$destinatario = 'nome@dominio.it';
$nome = $_POST['nome'];
$email = $_POST['email'];
$cap = $_POST['cap'];
$testo = $_POST['testo'];
// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
$oggetto .= "Richiesta lavoro da sito ciappinaro";
// Creo altre due variabili ad uno interno
$headers = "From: " . $oggetto;
$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 .= "MIME-Version: 1.0\r\n";
$msg .= "Content-Type: text/html; charset=utf-8\r\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "<h2>Email: <a href='mailto:" . $email . "'>" . $email . "</a></h2>
<h2>Quartiere: <a href='www.google.it/maps/place/". $cap . "'>Vedi sulla mappa</a></h2>
<h2>Messaggio: " . $testo . "</h2>";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Aggiungo l'allegato al messaggio
$msg .= "Content-Disposition: attachment; filename="{$allegato_name}"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";
// chiudo con il separatore
$msg .= "--{$mime_boundary}--\n";
}
// se non è stato caricato alcun file
// preparo un semplice messaggio testuale
else
{
$msg .= "MIME-Version: 1.0\r\n";
$msg .= "Content-Type: text/html; charset=utf-8\r\n";
$msg .= "<h2>Email: <a href='mailto:" . $email . "'>" . $email . "</a></h2>
<h2>Quartiere: <a href='www.google.it/maps/place/". $cap . "'>Vedi sulla mappa</a></h2>
<h2>Messaggio: " . $testo . "</h2>";
}
// Invio la mail
if (mail($destinatario, $nome, $msg, $headers))
{
echo '<script type="text/javascript">
alert("MESSAGGIO INVIARO CON SUCCESSO")
</script>';
}else{
echo '<script type="text/javascript">
alert("ERRORE: MESSAGGIO NON INVIATO")
</script>';
}
?>