testo html non viene interpretato in invio mail

ciao a tutti,

ho il seguente codice per l'invio di email tramite la funzione mail() di php.

la mail parte correttamente ma, quando la ricevo, vedo che la formattazione html non viene interpretata. in pratica vedo tutti i tag.

che cosa succede

ecco la pagina che uso

<?PHP

   include "conn.php";

   
   function pagineprenotazioni($page, $pagetitle){
      $mysqlc2 = new mysqlc();
      $mysqlc2->query("SELECT id FROM pagine_richieste WHERE url_pagina = '$page' AND pagina='$pagetitle';");
      if(($result = mysql_fetch_array($mysqlc2->result, MYSQL_ASSOC)) !== FALSE ) $mysqlc2->query("UPDATE pagine_richieste SET prenotazioni = prenotazioni + 1 WHERE id='{$result['id']}';");
      else $mysqlc2->query("INSERT INTO pagine_richieste SET url_pagina = '$page', pagina = '$pagetitle', prenotazioni = '1';");
   }



   $nome = $_POST['nome'];

   $mail = $_POST['mail'];

   $telefono = $_POST['telefono'];

   $cellulare = $_POST['cellulare'];

   $fax = $_POST['fax'];

   $localita = $_POST['localita'];

   $periodosoggiornoda = $_POST['periodosoggiornoda'];

   $periodosoggiornoal = $_POST['periodosoggiornoal'];

   $tiporesidenza = $_POST['tiporesidenza'];

   $altro = $_POST['altro'];

   $numeropersone = $_POST['numeropersone'];

   $budget = $_POST['budget'];

   $messaggio = $_POST['messaggio'];



   $mysqlc->query("INSERT INTO richieste SET 

                     nome='$nome',

                     mail='$mail',

                     telefono='$telefono',

                     cellulare='$cellulare',

                     fax='$fax',

                     localita='$localita',

                     periodosoggiornodal='$periodosoggiornoda',

                     periodosoggiornoal='$periodosoggiornoal',

                     tiporesidenza='$tiporesidenza',

                     altro='$altro',

                     numeropersone='$numeropersone',

                     budget='$budget',

                     messaggio='$messaggio',

                     data_ricezione_richiesta='".time()."',

                     stato='0';");

   // Specifica la tua mail e quella del destinatario
   //$mail_mittente = "info@viagginelsalento.it";
   $mail_destinatario = "info@viagginelsalento.it";

   // Specifica l'oggetto ed il corpo della mail
   $mail_oggetto = "Messaggio di prova 6";
   //$mail_corpo = "Questo è un messaggio di prova per testare la mia applicazione";



   $headers = "X-Mailer: ViagginelSalento_IT\n";

   

   // costruiamo le intestazioni specifiche per il formato HTML

   $headers .= "MIME-Version: 1.0\n";

   $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";

   $headers .= "Content-Transfer-Encoding: 7bit\n\n";


   // Messaggio

   $messaggio = "

   <!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>Richiesta di Contatto</title>

   </head>

   

   <body style='text-align: center;'>

      <div style='border: solid 0px; width: 752px; padding-top: 150px; margin: auto; background-image: url(http://banner/logo-salento.jpg); background-repeat: no-repeat; background-position: top;'>

      <div style='padding: 15px; border-top: solid #0000FF 1px; width: 100%;'>

               <div style='float: left; text-align: left;'>

                  <b>Nome:</b><br />

                  <b>Mail:</b><br />

                  <b>Telefono:</b><br />

                  <b>Cellulare:</b><br />

                  <b>Fax:</b><br />

                  <b>Localita:</b><br />

                  <b>Dal:</b><br />

                  <b>Al:</b><br />

                  <b>Tipo di residenza:</b><br />

                  <b>Numero di persone:</b><br />

                  <b>Budget:</b><br />

               </div> 

               <div style='margin-left: 150px; text-align: left;'>

                  $nome<br />

                  $mail<br />

                  $telefono<br />

                  $cellulare<br />

                  $fax<br />

                  $localita<br />

                  $periodosoggiornoda<br />

                  $periodosoggiornoal<br />

                  $tiporesidenza<br />

                  $numeropersone<br />

                  $budget<br />

               </div>

               <div style='text-align: left; padding-top: 25px; padding-bottom: 25px;'>

                  <b>Messaggio:</b><br />

                  <div style='border: solid 1px; padding: 5px; width: 700px; height: auto;'>

                  ".nl2br($messaggio)."

                  </div>

                  <br /><br /><br />

                  <b>Altro:</b><br />

                  <div style='border: solid 1px; padding: 5px; width: 700px; height: auto;'>

                  ".nl2br($altro)."

                  </div>

               </div>



         </div>

         <div style='border-top: solid #0000FF 1px; width: 100%; text-align: left; padding: 15px; font-family: Arial, Helvetica, sans-serif; font-size: 12px;'>

            <p>";

   

   #############################################################################

   # Calcola la pagina precedente da cui viene l'utente

   $uip = $_SERVER["REMOTE_ADDR"];

   $db = "_1";

   $mysqlc = new mysqlc();

   $mysqlc->query("SELECT * FROM `details` WHERE ip='$uip' ORDER BY `date` DESC LIMIT 0, 10;");

   $messaggio .= "<b>L'utente, prima di prenotare con il form, si trovata nelle pagine:</b><br />";   

   $cnt = 3;

   while(($result = mysql_fetch_array($mysqlc->result, MYSQL_ASSOC)) !== FALSE){

      echo $result['currentPage'];

      if(strtolower($result['currentPage']) == "form.htm") continue;

      else {

         $messaggio .= "$cnt - <b>URL:</b> <font style='color: #FF0000;'>{$result['currentPage']}</font> <b>Titolo:</b> <font style='color: #FF0000;'>{$result['titlePage']}</font><br />";

         pagineprenotazioni($result['currentPage'], $result['titlePage']);         

         if($cnt == 1) break;

         else $cnt--;

      }

   }

   

   $messaggio .= "

            </p>

         </div>   

         <div style='border-top: solid #0000FF 1px; width: 100%; text-align: center; padding: 15px; font-family: Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px;'>

            <img src=\"bannersalentoviaggi.gif\" alt=\"\" />

         </div>      

      </div>

   </body>

   </html>

   ";
   

   // Invia la mail e lancia un messaggio di conferma
   if (mail($mail_destinatario, $mail_oggetto, $messaggio, "From: $mail_mittente", $headers))
   {
       echo "Messaggio inviato con successo a $mail_destinatario";
   }
   // oppure un messaggio di errore in caso di fallimento
   else
   {
       echo "Errore. Nessun messaggio inviato.";
   }
?>
inviato 8 anni fa
danielix
X 0 X

negli headers prova ad usare come caratteri di fine riga \r\n

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ciao ho fatto così

   $headers = "X-Mailer: Salento_IT\r\n";

   

   // costruiamo le intestazioni specifiche per il formato HTML

   $headers .= "MIME-Version: 1.0\r\n";

   $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";

   $headers .= "Content-Transfer-Encoding: 7bit\n\r\n";

ma il risultato è sempre che i tag html rimangono visibili grrr

risposto 8 anni fa
danielix
X 0 X

prova a togliere il "Content-Transfer-Encoding"

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

nada de nada,

il risultato è sempre tutto il codice html in chiaro

 :'(

risposto 8 anni fa
danielix
X 0 X

ho anche notato che cliccando destro sul messaggio ed entrando in dettagli

alla fine noto quanto segue

Mime-Version: 1.0

Content-Type: text/plain

è come se outlook express non riconoscesse che quel messaggio è in html

ma negli headers io ho messo $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\r\n";

quindi dovrebbe riconoscere l'html ma non lo fa  >:(

uffa

risposto 8 anni fa
danielix
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda