ho poca o nulla conoscenza del codice ma volevo comunque implementare un form di invio mail nella pagina "contatti" del mio portfolio(http://xxxx.it/ ), ho scaricato un form esempio che ho trovato su MMKit, mi sono armato di un pò di pazienza e ci ho smanettato finchè non ho capito più o meno come funzionava e ho modificato i campi di mio interesse lasciando intatto il funzionamento...
funziona tutto perfettamente, sia il testo di "riscostro" dopo l'invio che il testo del messaggio che arriva alla mia casella di posta vengono visualizzati correttamente,
l'unica cosa a non essere correttamente visualizzata sono le lettere accentate nel messaggio di conferma che arriva al mittente del form, ho provato cambiando la codifica dei caratteri, dove fosse specificata con charset=iso-8859-1, in charset=UTF-8, ma niente, quì di seguito il codice...
codice:
<?
if ($op=="invio") {
$error=0;
$msg="";
if ($nome=="") {
$error=1;
$msg.="- Il campo nome è vuoto.
";
}
if ($cognome=="") {
$error=1;
$msg.="- Il campo oggetto è vuoto.
";
}
if ($email=="") {
$error=1;
$msg.="- Il campo e-mail è vuoto.
";
}
if ($email!="" && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
$error=1;
$msg.="- L'e-mail inserita non è valida.
";
}
if ($commento=="") {
$error=1;
$msg.="- Il campo messaggio è vuoto.
";
}
$error_file="";
if ($error==1 || $error_file!="") {
echo"
Attenzione! Si sono verificati i seguenti errori:
$msg
$error_file
<a href=\"javascript:history.back()\">Clicca qui</a> per inserire i dati.";
} else {
$emailto="xxx@xxx.it"; // INERIRE L'EMAIL QUI!!
$headers = "MIME-Version: 1.0\n"; // INVIATA A ME!!
$headers .= "Content-Type: multipart/mixed; boundary=\"XX-1234DED00099A\"\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "From: $email\n";
$messaggio.="--XX-1234DED00099A\n";
$messaggio.="Content-Type: text/plain; charset=UTF-8\n";
$messaggio.="Content-Transfer-Encoding: 7bit\n\r";
$messaggio.="Dati inseriti\n";
$messaggio.="Nome: $nome\n\rOggetto: $cognome\n";
$messaggio.="E-mail: $email\nMessaggio:\n$commento\n";
$oggetto_send="Webmaster - 3D Portfolio";
if (!mail($emailto, $oggetto_send, $messaggio, $headers)) {
echo"
Attenzione.
Si sono verificati degli errori durante l'invio della Email.
Riprovare di nuovo <a href=\"javascript: history.back()\">cliccando qui.</a>
Se l'errore persiste riprovare più tardi. Grazie.";
}
else {
$messaggio_risposta.="--XX-1234DED00099A\n"; // INVIATA A TERZI!!
$messaggio_risposta.="Content-Type: text/plain; charset=UTF-8\n";
$messaggio_risposta.="Content-Transfer-Encoding: 7bit\n\r";
$messaggio_risposta="Grazie per avermi contattato.\n\rIl messaggio e' stato inoltrato, rispondero' appena possibile.\n\r\n\rDati inseriti\n";
$messaggio_risposta.="Nome: $nome\n\rOggetto: $cognome\n\r";
$messaggio_risposta.="Messaggio:\n\r$commento\n\r\n\r";
$messaggio_risposta.="Distinti saluti.\n\r";
$oggetto2="Messaggio inoltrato";
mail($email, $oggetto2, $messaggio_risposta,"From: TeraBIT <$emailto>");
echo "
E-mail inviata correttamente.
I dati inseriti sono i seguenti:
";
echo"Nome: $nome
Oggetto: $cognome
";
echo"E-mail: $email
Messaggio:
".nl2br($commento)."
Grazie per avermi contattato, rispondero' appena possibile.";
}
}
} else {
?>
ho provato anche inserendo a capo del codice una funzione che dovrebbe sostituire i caratteri mal interpretati con lettere apostrofate ma neanche quello funziona, probabilmente perchè il corpo del messagio nel corpo del php non è che una variabile facente riferimento alla text area per cui non ne processa il contenuto, almeno credo...
codice:
<?
function togliaccenti($stringa)
{
$stringa=str_replace("Ã*","a'",$stringa);
$stringa=str_replace("è","e'",$stringa);
$stringa=str_replace("é","e'",$stringa);
$stringa=str_replace("ì","i'",$stringa);
$stringa=str_replace("ò","o'",$stringa);
$stringa=str_replace("ù","u'",$stringa);
return $stringa;
}
l'errore è presente anche nel file orginale, insomma non è comparso dopo l'ho modificato,
spero possiate risolvermi questo "dettaglio" altrimenti dovrò cancellare la parte di codice incaricata di riportare il contenuto del messagio spedito, e mi dispiacerebbe...
grazie per la vostra attenzione