Что бы вы ни использовали для ввода темы, не использовался простой апостроф '
, который имеет общее представление практически для всех однобайтовых кодировок и 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?="