Невозможно отобразить французские акценты в php почте - PullRequest
4 голосов
/ 02 ноября 2011

У меня следующий 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, я не понимаю, почему это не работает.

Ответы [ 3 ]

7 голосов
/ 02 ноября 2011

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

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

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

ОБНОВЛЕНИЕ (пример рабочего кода)

<?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!';
}
?>
3 голосов
/ 10 марта 2017

Смотрите здесь хорошие комментарии, которые я нашел. Только это работает для меня. 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);
1 голос
/ 22 апреля 2014

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

$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);

}
...