Visualizzazione risultati 1 fino 4 di 4

Discussione: Problema con il codice HTML nell'invio delle mail

  1. #1
    Guest

    Predefinito Problema con il codice HTML nell'invio delle mail

    Come ho già scritto più volte, gestisco una newsletter. Il testo da inviare è memorizzato in una variabile di sessione che si chiama $_SESSION['mail']['testo']. Ebbene, il procedimento è semplice: la mail viene inviata ai miei iscritti e, successivamente, viene salvata in un file di testo nell'archivio. Prima di inviarla, ovviamente, me la visualizza, cosicché io possa decidere se mandarla o coreggere alcuni errori. Ecco a voi il codice HTML di una di queste email che ho fatto di prova (i contenti non sono un granché, mi interessa la forma):

    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <style type="text/css">
    
    	body {
    		font-family: Verdana, "Nimbus Sans L";
    		background-color: #FFFFFF;
    	}
    	a:link{
    		text-decoration:none;
    	}
    	a:visited{
    		text-decoration:none;
    		color:#0000FF;
    	}
    	a:hover{
    		color: #d50000;
    	}
    	p {
    		text-align: justify;
    	}
    	.problemi{
    		text-align: left;
    		margin-top: 50px;
    		margin-bottom: 30px;
    	}
    	.bloccofrase{
    		margin-top: 50px;
    		text-align: center;
    	}
    	.frase {
    		font-style: italic;
    	}
    	.fraseautore{
    		padding-left: 150px;
    	}
    	.bloccovignetta{
    		text-align: center;
    	}
    	.finale{
    		text-align: center;
    		margin-bottom: 20px;
    	}
    	hr {
    		margin-top: 75px;
    		margin-bottom: 75px;
    	}
    	h1 {
    		text-align: center;
    	}
    	h2 {
    		margin-bottom: 20px;
    		color: #660000;
    	}
    	h3 {
    		margin-top: 30px;
    		margin-bottom: 0px;
    	}
    	h4 {
    		margin-top: 30px;
    	}
    </style>
    </head>
    <body>
    <h1>Newsletter del Liceo di Lugano 1<br>16 - 22 ottobre</h1>
    <p class="problemi">Hai problemi nella visualizzazione dell&rsquo;email? Vai alla pagina http://lilu1.altervista.org/lilu1/Newsletter/Archivio/16_-_22_ottobre.php</p>
    <ul class="calendari"><li>Per il Calendario Ebraico &egrave; la settimana del 17 - 23 Tishri 5767</li>
    <li>Per il Calendario Islamico &egrave; la settimana del 16 - 22 Ramadhan 1427</li>
    <li>Per il Calendario Rivoluzionario &egrave; la settimana del 17 - 23 Vend&eacute;miaire 215</li>
    </ul>
    <div class="bloccofrase">
    <h4>Frase della settimana</h4>
    <div><span class="frase">Non &egrave; tutto oro quel che luccica</span>
    <div class="fraseautore">(Cicerone)</div>
    <br>
    </div>
    </div>
    <div class="bloccovignetta">
    <h4>Vignetta della settimana</h4>
    <div><a href="http://lilu1.altervista.org/lilu1/Newsletter/Immagini/Debian-Tux.jpg"><img src="http://lilu1.altervista.org/lilu1/Newsletter/Immagini/Debian-Tux.jpg" alt="http://lilu1.altervista.org/lilu1/Newsletter/Immagini/Debian-Tux.jpg"></a>
    <br>
    Debian!</div>
    </div>
    <h2>Indice</h2>
    <ul class="indice"><li>Agenda</li>
    <li>Comunicazioni</li>
    <li>Attualit&agrave;</li>
    <li>Nuovo titolo</li></ul>
    <hr>
    <h2>Agenda</h2>
    <h3>Luned&igrave&nbsp;16</h3>
    <ul>
    <li>prova OK!</li>
    </ul>
    <h3>Altre segnalazioni</h3>
    <ul>
    </ul>
    <hr>
    <h2>Comunicazioni</h2>
    <ul>
    <li>Scrivi qui il testo</li>
    <li>Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo.</li>
    </ul>
    <hr>
    <h2>Attualit&agrave;</h2>
    
    <h3>Guerra fredda: lo scandalo continua</h3>
    <div style="margin-bottom: 30px">
    &Egrave; successo ieri.
    <br>Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo. Non se ne pu&ograve; pi&ugrave;, &egrave; davvero tremendo.
    </div>
    <hr>
    <h2>Nuovo titolo</h2>
    <p>Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo. Scrivi qui il testo.</p>
    <hr>
    <div class="finale">
    Ricevi questa newsletter perch&eacute; sei iscritto al servizio newsletter del Liceo di Lugano 1. Trovi informazioni su questo servizio all&rsquo;indirizzo seguente: <a href="http://www.lilu1.altervista.org/lilu1/Newsletter">www.lilu1.altervista.org/lilu1/Newsletter</a> oppure contattandoci tramite e-mail all&rsquo;indirizzo <a href="mailto:lilu1@altervista.org">lilu1@altervista.org</a> o dalla pagina <a href="http://www.lilu1.altervista.org/lilu1/Contattaci.php">www.lilu1.altervista.org/lilu1/Contattaci.php</a>.<br>Per cancellare la propria iscrizione dal servizio andare alla pagina <a href="http://www.lilu1.altervista.org/lilu1/Newsletter/Formulario.php">www.lilu1.altervista.org/lilu1/Newsletter/Formulario.php</a>.<br>Vuoi iscrivere qualche amico? Vai alla pagina <a href="http://www.lilu1.altervista.org/lilu1/Newsletter/Formulario.php">www.lilu1.altervista.org/lilu1/Newsletter/Formulario.php</a>.<br>
    	Ricordiamo che il servizio &egrave; gratuito e senza scopo di lucro come si pu&ograve; notare dall&rsquo;assenza di pubblicit&agrave;.
    </div>
    <div class="finale">
    <b>Inviaci materiale da aggiungere alla newsletter! Vai alla pagina <a href="http://www.lilu1.altervista.org/lilu1/Contattaci.php">www.lilu1.altervista.org/lilu1/Contattaci.php</a> oppure scrivici all&rsquo;indirizzo <a href="mailto:lilu1@altervista.org">lilu1@altervista.org</a>.</b>
    </div>
    <br><br><br><br></body>
    </html>
    Come vedete, c'è la sua bella DTD, i tag al posto giusto, lo stile definito con i CSS interni, e tutto quanto. Ora, il problema è il seguente: quando io invio tramite la funzione mail() la mia newsletter, gli iscritti la ricevono, però con i caratteri di escape (i maledettissimi caratteri di escape). Quindi, al posto di un link funzionante come:
    Codice HTML:
    <a href="www.lilu1.altervista.org">Il mo sito</a>
    viene fuori un non funzionante:
    Codice HTML:
    <a href=\"www.lilu1.altervista.org\">Il mo sito</a>
    E questo vale per tutti i link e tutte le immagini di tutte le email ricevute da tutti i server. Inoltre, anche tutti gli altri attributi, come le classi e i testi alternativi, vengono falsati, per cui anche lo stile va a farsi benedire. Come posso fare? Il problema è a monte, sui miei script, per cui forse basterebbe una strpslashes() subito prima di inviare? Oppure è a valle, cioè i server non capiscono bene che devono fare con queste virgolette e le backslashano?
    Non so se mi sono spiegato...
    Aggiungo ancora solo il codice di invio, così potete controllare anche gli headers.

    Codice PHP:
    <?
    $a
    = $_SESSION['mail']['a'];
    $oggetto = "[Newsletter lilu1] " . $_SESSION['mail']['titolo'];
    $testo = $_SESSION['mail']['testo'];
    $header = "MIME-Version: 1.0\r\n";
    $header .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $header .= "From: Liceo di Lugano 1 <lilu1@altervista.org>";
    mail($a, $oggetto, $testo, $headers_mail)
    ?>
    (Ovviamente questo pezzo di codice è all'interno di un ciclo e viene ripetuto per tutti gli iscritti.)

  2. #2
    Guest

    Predefinito

    ma hai usato stripslashes()? <--- da cancellare

    Non avevo letto bene... hai impostato l'header per l'invio delle pagine html? Inviami una mail anche a me :) così la controllo
    Ultima modifica di demenziale : 06-11-2006 alle ore 17.12.10

  3. #3
    Guest

    Predefinito

    ritegno che il problema sia dovuto a magic_quotes_gpc: un'utilissima impostazione di php che 'backslasha' automaticamente tutte gli apici e i doppi apici delle varibili superglobali GET, POST e COOKIE (è vero che il contenuto della email è nell'array SESSION, ma sicuramente viene inviato al server con un form)...con stripslashes dovresti risolvere (ma non ti bastava fare un tentativo?)

  4. #4
    Guest

    Predefinito

    Ho riflettuto un attimo... Spiego brevemente come assemblo il codice: durante la settimana un gruppo di persone inserisce i contenuti nel database grazie a una sertie di pagine che ho fatto; ogni volta che qualcuno inserisce qualcosa, PHP cambia le virgolette e gli apici in &rsquo; e &rdquo;. Poi, alla fine, nell'assemblaggio finale, inserisce il codice HTML. Quindi le virgolette esistono solo nei parametri dei TAG.
    A parte questa digressione, nei fatti c'è che per sbaglio ho ritenuto di non dover usare stripslashes() perché viene usato ogni volta che si inserisce qualcosa nel database. Invece probabilmente dovrei usarlo.
    Per concludere, io lunedì invio la newsletter come al solito, ma stavolta stripslasho il testo subito anche prima di inviarlo. Poi, se ancora ho problemi, invio un'email anche a Demenziale.
    Grazie.
    EDIT: Comunque gli headers sono a posto, credo, perché il server interpreta correttamente l'HTML.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •