Mail: non funzionano i codici html!

the_boss

Utente Attivo
21 Feb 2010
53
0
0
nell'invio di mail tramite php non funzionano i codici html.
cioè, vorrei inviare un link che al posto del link c'è scritto quello che voglio.
tipo:
HTML:
<a href="http://----">Clicca qui</a>
con msn non funziona, mi scrive proprio tutto il codice tranne il link che diventa cliccabile.
come faccio??
 
In ogni caso l'invio di e-mail in formato HTML con PHP è una procedura piuttosto lunga e complicata. Non basta inserire all'interno del contenuto il codice che vuoi. Per fortuna esistono alcune classi come PHPMailer che semplificano di molto il lavoro. Ti consiglio di dare un'occhiata a qualche tutorial (se non sbaglio ce n'è anche uno qui, sul sito).
 
Per inviare mail contenenti codice HTML è necessario settare opportunamente le intestazioni della mail. Tra queste vanno configurate "MIME-Version", "Content-Type" e "Content-Transfer-Encoding". Per cui al tuo header devi aggiungere:

PHP:
$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$header .= "Content-Transfer-Encoding: 7bit\n\n";

Ovviamente perchè il tutto funzioni correttamente il client di posta deve essere configurato per poter ricevere mail contenente codice HTML.
 
grazie, fantastico funziona ^^
solo che ora nel messaggio non funziona il
PHP:
\n
XD
però ora si puo usare il br quindi apposto ^^
grazie infinite ^^
 
Comunque di solito, quando vengono inviate le e-mail in HTML, vengono inviate due versioni del messaggio. Una contiene il messaggio formattato in HTML, e l'altra contiene il messaggio in formato testo semplice. In questo modo, quando invii una e-mail ad un client che non è configurato per visualizzare il codice HTML, automaticamente verrà visualizzata la versione solo testo.
 
Alessandro mi ha preceduto e quello che dice è giustissimo. Per ovviare all'inconveniente dei client non configurati per ricevere mail contenenti HTML basta inviare una mail con due testi alternativi, uno HTML e l'altro di puro testo.
Per fare ciò si utilizza il "Content-Type multipart/alternative" che indica che il messaggio è costituito da più parti alternative tra di loro.
Per dividere le varie parti viene utilizzato un separatore chiamato Boundary. Esso è semplicemente una stringa arbitraria unica all'interno del messaggio. Essa deve iniziare con due trattini "--".
La stessa stringa servirà anche come terminatore del messaggio ed in questo caso terminerà con due trattini "--"
In genere il separatore (Boundary) si ottiene utilizzando la funzione md5() e la funzione time() per generare una stringa pseudocasuale.

Un esempio di codice per l'invio di una mail multipart/alternative è il seguente:

PHP:
$boundary = "==Boundary_".md5(time()); 

$header = "MIME-Version: 1.0\n";
$header .= "Content-Type: multipart/alternative;\n";
$header .= " boundary=\"$boundary\";\n\n";

// Parte del messaggio solo testo
$msg = "--$boundary\n";
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Inserire qui il messaggio in formato solo testo.\n\n";

// Parte del messaggio HTML
$msg .= "--$boundary\n";
$msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= "Inserire qui il messaggio in formato HTML\n";

$msg .= "--$boundary--\n";
 

Discussioni simili