Вы делаете это правильно.По умолчанию PHPMailer (как и внутренняя функция PHP mail
) использует набор символов ISO-8859-1, поскольку его можно использовать при отсутствии расширения PHP * mbstring
, которое не доступно по умолчанию - и если у вас его нетэто расширение, поддержка UTF-8 не будет работать.После того, как вы переключитесь на использование UTF-8, вся ваша цепочка инструментов должна также использовать UTF-8 - ваши редакторы, вашу базу данных, ваше соединение с базой данных.Вам также следует опасаться таких функций, как strlen
и substr
, которые не являются безопасными в UTF-8, поскольку работают в байтах, а не в символах (длина которых может превышать 1 байт).Всякий раз, когда что-то из этого получается неправильно, вы увидите, какая у вас коррупция.Это хорошее упражнение - придерживаться некоторых сложных строк для тестирования (хотя см. мой ответ об этом ), чтобы убедиться, что он прошел невредимым.
К сожалению, MS Word - один из лучшихпримеры того, как сделать UTF-8 плохо;он часто смешивает текст с ненужными необычными символами, дополнительными символами управления и т. д., поэтому я бы посоветовал сделать некоторую интенсивную фильтрацию для ваших входов - редакторы, такие как CKEditor, имеют встроенные фильтры, чтобы помочь справиться с проблемами Word.Это не имеет ничего общего с PHPMailer, это обычная проблема, связанная с вводом, которого коснулся Word.
Единственное, что вы делаете неправильно, - это использование PHPMailer 5.x;текущая версия 6.x.