в PHP конвертируется в & rsquo; при использовании mb_convert_encoding в теме Outlook - PullRequest
0 голосов
/ 06 марта 2019

У меня настроена функция mail () на PHP, когда я отправлял электронное письмо на тестирование, я заметил, что тема конвертирует мои «в».

$subject="Please provide an updated copy of your company's certification";

результат: предоставьте обновленную копию сертификата вашей компании.

Я следовал Получив вместо апострофа (') в PHP добавив mb_convert_encoding, но теперь я получаю & rsquo вместо'.

$subjectBad="Please provide an updated copy of your company's certification";
$subject= mb_convert_encoding($subjectBad, "HTML-ENTITIES", 'UTF-8');

результат: предоставьте обновленную копию сертификата вашей компании.

В моей личной электронной почте все в порядке, есть ли способ правильно отобразить тему 'в теме Outlooks, или я не в курсе, какие у них настройки системы?

1 Ответ

0 голосов
/ 07 марта 2019

Что бы вы ни использовали для ввода темы, не использовался простой апостроф ', который имеет общее представление практически для всех однобайтовых кодировок и UTF8, вместо этого он использовал "причудливую" правильную одинарную кавычку , котораяПредставляется по-разному между однобайтовыми кодировками и UTF-8.

mb_convert_encoding() преобразуется в сущность HTML, потому что вы в прямом смысле этого говорите, а заголовки электронной почты не являются HTML, поэтому он будет отображаться в виде буквенной строки’.Единственный набор символов, кроме UTF-8, который имеет «умные кавычки», - это cp1252 от Microsoft, и это все еще неправильный ответ для заголовков писем.

Самый простой ответ: не делайте этого.Используйте нормальный апостроф.Все ненавидят иметь дело с «умными» кавычками.

Более сложный ответ заключается в том, что заголовки писем ДОЛЖНЫ быть 7-битным безопасным текстом «ASCII», а все остальное требует дополнительной ручной разметки.В идеале вы должны использовать надлежащую библиотеку электронной почты, которая обрабатывает это, а также десятки других неприятностей, которые могут испортить ваши электронные письма и повлиять на доставляемость.

Если вы не можете отказаться от своего здравомыслия и использовать mail()непосредственно, тогда вы захотите правильно кодировать строку темы и использовать явно определенный набор символов, , который вы должны делать в любом случае .Например:

$subject = 'Please provide an updated copy of your company’s certification';

var_dump(
    sprintf('=?UTF-8?Q?%s?=', quoted_printable_encode($subject))
);

Вывод:

string(82) "=?UTF-8?Q?Please provide an updated copy of your company=E2=80=99s certification?="
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...