- Home
- Categorie
- Coding e Sistemistica
- PHP
- Lettere accentate in una mail
-
Lettere accentate in una mail
Ciao a tutti, ho un problemino, spiego subito
ho uno script che invia una mail, con un campo messaggio, solo che quando mi arriva le lettere accentate mi da dei simboli strani, sapreste dirmi a cosa è dovuto ciòGrazie da danny
-
Ciao, è un problema di codifica caratteri? Potresti fare una prova leggendo le mail con browser diverso, oppure settando dai browser medesimi la codifica, ad es.: Unicode (UTF-8); Occidentale (ISO-8859-1).
-
Prova a passare il testo del messaggio nella funzione utf8-decode(), prima di inserirlo nella funzione mail().
Da dove le leggi le email?
-
Ciao ragazzi, grazie per avermi risposto, vi posto il codice così ci capiamo, tutto funziona correttamente tranne le lettere con l'accento
[php]
require "connessione/Config.php";
require "connessione/Connect.php";
if(isset($_POST['mail']))
{
$email = trim(stripslashes($_POST['mail']));
$mittente = trim(stripslashes($_POST['mittente']));
$messaggio = trim(stripslashes(nl2br($_POST['richiesta'])));
//queste le ho provate entrambe
//$mess = str_replace("à", "à", $messaggio);
//$messaggio = str_replace("è", "e", $messaggio);
//$messaggio = str_replace("é", "e", $messaggio);
//$messaggio = str_replace("ì", "i", $messaggio);
//$messaggio = str_replace("ò", "o", $messaggio);
//$messaggio = str_replace("ù", "u", $messaggio);
if(!$email || !$mittente || !$messaggio)
{
header('location:'.'index.php?settore=risp_ko');
exit;
}// Genera un boundary
$mail_boundary = "=NextPart" . md5(uniqid(time()));// inserire mail destinatario
$to = "[email protected]";
$subject = "Informazioni";
// inserire mail mittente
$sender = "$email";
$headers .= "Content-Type: text/html; charset="iso-8859-1"\n";
$headers = "From: $sender\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/alternative;\n\tboundary="$mail_boundary"\n";
$headers .= "X-Mailer: PHP " . phpversion();$html_msg = " <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
<table cellspacing = '0' cellpadding = '0' border = '0'>
<tr>
<td valign = 'top' height= '40'>
<font face = 'Comic Sans MS' size = '4'>
Richiesta Informazioni
</font>
</td>
</tr>
<tr>
<td>
<font face = 'Comic Sans MS, Verdana' size = '2'>
<b>Informazioni sul richiedente</b><br>
Nome: $mittente<br>
Indirizzo e-mail: $email<br><br>
<b>Messaggio</b><br>
$messaggio<br><br>
</font><br><br><br>
</td>
</tr>
</table>
</BODY>
</HTML>";$msg .= "\n--$mail_boundary\n";
$msg .= "Content-Type: text/html; charset="iso-8859-1"\n";
$msg .= "Content-Transfer-Encoding: 8bit\n\n";
$msg .= $html_msg; // aggiungi il messaggio in formato HTML// Boundary di terminazione multipart/alternative
$msg .= "\n--$mail_boundary--\n";// Imposta il Return-Path (funziona solo su hosting Windows)
ini_set("sendmail_from", $sender);// Invia il messaggio, il quinto parametro "-f$sender" imposta il Return-Path su hosting Linux
if (mail($to, $subject, $msg, $headers, "-f$sender"))
{
header('location:'.'index.php?settore=risp_ok');
exit;
}
else
{
header('location:'.'index.php?settore=risp_ko');
exit;
}
}
else
{
header('location:'.'index.php');
exit;
}
[/php]Ciao da danny
-
elimina direttamente tutta questa parte:
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> <HTML> <HEAD> <META http-equiv=Content-Type content=\"text/html; charset=iso-8859-1\"> </HEAD>
insieme al tag </HTML> in chiusura.
Poi cancella anche:
[PHP] $msg .= "Content-Type: text/html; charset="iso-8859-1"\n";[/PHP]
in questo modo hai tutte le dichiarazioni del charset la dichiarazione del charset e così dovrebbe andare. Probabilmente fa a pugni col fatto che il file che contiene questo script e codificato in utf-8.
Se non fosse sufficiente, prova a modificare la riga:
[PHP] if (mail($to, $subject, $msg, $headers, "-f$sender")) [/PHP]
così:
[PHP] if (mail($to, $subject, utf8_decode($msg), $headers, "-f$sender")) [/PHP]
-
Ciao e grazie per la dritta, è bastato modificare solo l'ultima riga
utf8_decode($msg)
facendo le altre operazioni richieste non mi formattava html
Ciao e grazie da danny