为什么我的邮件功能在主题中显示utf8字符而在邮件本身中不显示?

时间:2016-11-28 01:08:52

标签: php utf-8

我正确收到了电子邮件。出于安全考虑,我隐藏了我的重新密钥,但这部分工作正常。当我收到电子邮件时,主题的特殊字符会正确显示。但是,如果在消息中发送了法语口音(例如éèàç),则显示如下(éèà ç)。由于这是一个法国网站,这是一个真正的问题。我在邮件功能中尝试了utf8_encode($message),但无济于事。我查看了其他stackoverflow帖子但没有帮助。同样在消息中,此部分显示为Content-type: text/plain; charset=UTF-8'。这可以避免吗?

<?php
    if(isset($_POST['valider'])) {
            $url = 'https://www.google.com/recaptcha/api/siteverify';
            $privateKey = "secret";

            $response = file_get_contents($url."?secret=".$privateKey."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR']);
            $data = json_decode($response);
            if(isset($data->success) AND $data->success==true){

                    $rusty = 'email@email.com';
                    $destinataire = $_POST["email"];
                    $message = utf8_encode(wordwrap($_POST['message']));
                    $subject = "Question pour la méthode EtVoilà";
                    $headers = 'From:' .  $destinataire."\n";
                    $header_ = 'MIME-Version: 1.0' . "\r\n" . 'Content-type: text/plain; charset=UTF-8' . "\r\n";
                    if(mail($rusty,'=?UTF-8?B?'.base64_encode($subject).'?=',$message,$header_ . $headers)) {
                    header('Location: index.php?MessagePass=True');
            } else {
                    header('Location: index.php?MessageError=True');
                    }
            }
    }
?>

1 个答案:

答案 0 :(得分:0)

我发现函数iconv对我有用,这是新的部分以防有人遇到同样的问题。我只是在下面的代码中添加第二行。

LinkedHashSet