• User Attivo

    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:ciauz:


  • User Attivo

    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).


  • User

    Prova a passare il testo del messaggio nella funzione utf8-decode(), prima di inserirlo nella funzione mail().

    Da dove le leggi le email?


  • User Attivo

    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


  • User

    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]


  • User Attivo

    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 :ciauz: