Visualizzazione dei risultati da 1 a 5 su 5

Discussione: invio email con utf-8

  1. #1

    invio email con utf-8

    ciao a tutti.
    Ho una pagina con charset utf-8.
    Dentro questa pagina ho un form che manda una email.
    Quando arriva l'email i caratteri accentati sono tutti sfasati.
    Sapete come ovviare il problema?

    Ps: non posso mettere la pagina con charset ISO se no mi si sfasa tutto.

    grazie mille!

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Imposta il charset corretto nella mail.

    Da php.net fra i commenti alla funzione mail.
    Zane @ MLI08-Sep-2010 10:17

    Italian users cursing against "È" and other uppercase-accented-vowels ("vocali maiuscole accentate"") in subjects! While the lowercase ones ("è", "é" and so on) work as expected, qmail doesn't handle the uppercase ones.

    To fix it, the only way I found was this:

    <?php

    function mail_utf8($to, $subject = '(No subject)', $message = '', $header = '') {
    $header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
    mail($to, '=?UTF-8?B?'.base64_encode($subject).'?=', $message, $header_ . $header);
    }

    ?>

    It should apply to other languages too.
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    e cavoli mi sa che l'ho gia fatto.
    Ecco il codice:

    codice:
    error_reporting(E_ALL);
    
    // Genera un boundary
    $mail_boundary = "=_NextPart_" . md5(uniqid(time()));
     
    $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();
     
    // Costruisci il corpo del messaggio da inviare
    $msg = "This is a multi-part message in MIME format.\n\n";
    $msg .= "--$mail_boundary\n";
    $msg .= "Content-Type: text/plain; charset=\"UTF-8\"\n";
    $msg .= "Content-Transfer-Encoding: 8bit\n\n";
    $msg .= $text_msg;
     
    $msg .= "\n--$mail_boundary\n";
    $msg .= "Content-Type: text/html; charset=\"UTF-8\"\n";
    $msg .= "Content-Transfer-Encoding: 8bit\n\n";
    $msg .= $html_msg;
     
    // 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")) {
       $inviato = 1;
    } else {
       $inviato = 0;
    }
    grazie mille!

  4. #4
    Ho capito che il problema è a monte.

    Ho una pagina con questo charset:

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    dentro cè un form...

    se compilo il form con i caratteri accentati, invio il form che punta alla stessa pagina, la stampa dei caratteri è tutta sfasata...
    Devo mettere qualche specifica alla textarea o al form per dirgli di usare utf-8?

    grazie mille!

  5. #5
    trovato... bisogna indicare nei parametri del form che si vuole usare un charset differente:

    accept-charset="ISO-8859-1"

    ciao ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.