Не удается отобразить французские акценты в php mail

У меня следующий php-скрипт отправляет электронное письмо на основе возвращаемых параметров:

<? header('Content-Type: application/json; charset=utf-8'); $headers = "From: Source\r\n"; $headers .= "Content-type: text/html;charset=utf-8\r\n"; $to = $data["t_email"]; $subject = "Hello"; $message = (gather_post("locale") == "fr_CA")?"message français ééààèè": "english message"; mail($to, $subject, $message, $headers); ?> 

Я взял детали, которые не актуальны. Сообщение будет отправлено отлично, но акценты отображаются неправильно. Все было установлено как кодировка utf-8, я не понимаю, почему это не работает.

Возможно, вам придется кодировать html с помощью utf8_encode (). Например:

 $message = utf8_encode("message français ééààèè"); 

Я должен был сделать это для динамического импорта французских документов Word, и он отлично работает. Дайте мне знать, если это решит вашу проблему.

UPDATE (пример рабочего кода)

 <?php $to = 'example@gmail.com'; $subject = 'subject'; $message = utf8_encode('message français ééààèè'); $headers = 'From: webmaster@example.com' . "\r\n" . 'Reply-To: webmaster@example.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if(mail($to, $subject, $message, $headers)){ echo 'success!'; } ?> 

Чтобы устранить проблему, вам необходимо добавить следующую строку в функцию отправки электронной почты:

 $headers .= 'Content-type: text/plain; charset=UTF-8' . "\r\n"; 

Вот интеграция этой линии с функцией отправки по электронной почте:

 function send_email($to,$subject,$message,$fromemail) { $headers = "From: $fromemail" . "\r\n"; $headers .= "Return-Path: $fromemail" . "\r\n"; $headers .= "Errors-To: $fromemail" . "\r\n"; $headers .= 'Content-type: text/plain; charset=UTF-8' . "\r\n"; @mail($to,$subject,$message,$fromemail); } 

Смотрите хорошие комментарии, которые я нашел. Только это работает для меня. https://ncona.com/2011/06/using-utf-8-characters-on-an-e-mail-subject/

Детали:

 to = 'example@example.com'; $subject = 'Subject with non ASCII ó¿¡á'; $message = 'Message with non ASCII ó¿¡á'; $headers = 'From: example@example.com'."\r\n" .'Content-Type: text/plain; charset=utf-8'."\r\n"; mail($to, '=?utf-8?B?'.base64_encode($subject).'?=', $message, $headers);