Outlook non interpreta html di mail()

di il
1 risposte

Outlook non interpreta html di mail()

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

  • Re: Outlook non interpreta html di mail()

    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