Outlook non interpreta html di mail()

di Anonimizzato4437 il
1 risposte
Buongiorno a tutti,

da una settimana non riesco a venir fuori da questo problema, pur avendo visitato decine di thread sull'argomento.

invio una mail attraverso la funzione mail() di php, la mail parte correttamente ma, aprendola con outlook o altri server di posta, il codice html non viene interpretato.

facendo destro sul messaggio e guardando i dettagli del messaggio originale noto che il content-text è = a text/plain ma io, come si nota dal codice in basso, setto in text/html.

potete, per favore, darmi una mano?

desperate man (daniele)

<?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>SALENTO.IT - 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.";
   }
?>

1 Risposte

  • Ciao ci ho sbattuto tanto anch'io perchè non si visualizzava correttamente l'html
    Ti mando la pagina di invio che ora mi funziona bene, poi vedi tu:

    <?session_start();
    //phpinfo();exit;
    $titolo_pagina="Gestione Categorie Utenti";
    include("header.php");
    $id_news=$_REQUEST[id_news];
    $cat_invio=$_REQUEST[cat_invio];
    $id_tipo=$_REQUEST[id_tipo];
    $gruppo_invio=$_REQUEST[gruppo_invio];
    $id_gruppo_invio=$_REQUEST[id_gruppo_invio];
    $query=stripslashes($_REQUEST[laquery]);
    $query=str_replace("|| tipo=''","",$query);
    $query=str_replace("tipo=''","tipo='50000000'",$query);
    $sql="select * from `NEWSLETTER_JL` where (id='$id_news')";
    $ris=mysql_query($sql,$conn);
    while($row=mysql_fetch_array($ris)){
    $titolo=$row[titolo];
    $testo=$row[testo];
    $testo=str_replace("href=\"/admin/","href=\");
    $testo=str_replace("href=\"\"","href=\"http://www.sito.it\"",$testo);
    $testo=str_replace("href=\"/","href=\"http://www.sito.it\\",$testo);
    $testo_link1=$row[testo_link1];
    $link1=$row[link1];
    $testo_link2=$row[testo_link2];
    $link2=$row[link2];
    }
    $testo=str_replace("src=\"","src=\"http://www.sito.it",$testo);
    $sql_tipo="select tipo from `TIPO_JL` where (id='$id_tipo')";
    $ris_tipo=mysql_query($sql_tipo,$conn);
    while($row_tipo=mysql_fetch_array($ris_tipo)){
    $tipo.=$row_tipo[tipo]." - ";
    }
    $messaggio="
    <html>
    <head>
    <TITLE>Newsletter</TITLE>

    <STYLE TYPE=\"text/css\">
    <!--
    body{
    color: #000;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    }
    td {FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 12px;}
    a:link {BACKGROUND: none; COLOR: #666666; FONT-SIZE: 11px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none}
    a:active {BACKGROUND: none; COLOR: #666666; FONT-SIZE: 11px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none}
    a:visited {BACKGROUND: none; COLOR: #666666; FONT-SIZE: 11px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none}
    a:hover {BACKGROUND: none; COLOR: #1e6fa3; FONT-SIZE: 11px; FONT-FAMILY: Verdana, Helvetica; TEXT-DECORATION: none}
    .testohome {
    FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif;
    FONT-SIZE: 12px;color: #ffffff;
    TEXT-DECORATION: none;
    }
    #contenutiinvio{
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    position:relative;
    top:0;
    left:50px;
    width: 98%;
    bottom: 10%;
    }
    #colore{
    position:absolute;
    top:0;
    left:0px;
    width: 50px;
    height:300%;
    background-color:#0C4689;
    }
    #testatainvio{
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 14px;
    position:absolute;
    top:0%;
    left: 8%;
    width: 770px;height: 120px;
    }
    #formjoobleinvio{
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 11px;
    text-align:center center;
    width:100%;
    }
    -->
    </style>
    </HEAD>
    <body>
    <div id=\"colore\"></div>
    <div id=\"contenutiinvio\" align=\"left\">
    <img src=\"http://www.sito.it/admin/spaw2/uploads/images/testatina.jpg\" border=\"0\"><br /><br />
    $testo

    </div>
    </body>
    </html>";
    //INIZIO DELLE INTESTAZIONI DELLE EMAIL

    // costruiamo le intestazioni specifiche per il formato HTML
    $intestazioni .= "MIME-Version: 1.0\n";
    $intestazioni .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
    $intestazioni .= "From: Newsletter di ... <>\nReturn-Path: ";

    $oggetto_send=strip_tags($titolo);
    $INVIATE=0; ?>

    <span id="centro">
    <!--INIZIO DEI CONTENUTI DELLA PAGINA-->
    <table>
    <tr>
    <td><hr size="1" width="100%"></td>
    </tr>
    <tr>
    <td class="testohome_blu"><b>Lista email inviate:</b><br>
    <?//se l'invio avviene tramite gli indirizzi contenuti in un file csv
    $sql="Select email from `UTENTI_JL` where (".$query.") group by email";
    //echo $sql;exit;
    $ris=mysql_query($sql,$conn);
    $i=0;

    while($row=mysql_fetch_array($ris)){
    $i++;
    $mail=$row["email"];
    $mail2=$row["email2"];
    if(mail($mail,$oggetto_send, $messaggio, $intestazioni)){
    echo $mail." - ";
    $INVIATE=$INVIATE+1;
    }
    if($mail2 && $mail2!=''){
    if(mail($mail2,$oggetto_send, $messaggio, $intestazioni)){
    echo $mail2." ";
    $INVIATE=$INVIATE+1;
    }
    }
    }
    ?>
    </td>
    </tr>
    <tr>
    <td class="testohome_blu">Sono state inviate <?=$INVIATE;?> emails su <?=$i;?></td>
    </tr>
    </table>
    <?$sql="select numero_invii from `INVII_JL` where (id_newsletter='$id_news' and id_tipologia='$id_tipo')";
    $ris=mysql_query($sql,$conn);
    $row=mysql_fetch_array($ris);
    $num_invii=$row[numero_invii];
    if($INVIATE>0){
    $data=date("Y-m-d H:i:s");
    echo $data;
    if($num_invii){
    $AGGIUNGI=$num_invii+1;
    $sql="UPDATE `INVII_JL` SET `data_invio`='$data',`numero_invii`='$AGGIUNGI',`gruppo_invio`='$gruppo_invio',`id_gruppo_invio`='$id_gruppo_invio' where(id_newsletter='$id_news' and id_tipologia='$id_tipo')";
    mysql_query($sql,$conn);
    }else{
    $sql="insert into `INVII_JL` (`data_invio`,`numero_invii`,`id_newsletter`,`id_tipologia`,`gruppo_invio`,`id_gruppo_invio`) values ('$data','1','$id_news','$id_tipo','$gruppo_invio','$id_gruppo_invio')";
    mysql_query($sql,$conn);
    }
    }
    ?>
    </span>
    </div>
    </body>
    </html>
Devi accedere o registrarti per scrivere nel forum
1 risposte