Отправлять электронные письма с использованием международного акцента и специальных символов

Я отправляю рассылку через PHP mail () на испанском языке, у них есть акценты и специальные символы (которые я собираюсь попробовать здесь: á, í, é, … …).

Для HTML-версии письма, я думаю, я решил проблему, напечатав á , é

Однако для версии с открытым текстом я предполагаю, что не могу их поместить, правда?

Что лучше всего делать, как для HTML, так и для текстовой версии? Позже мне, возможно, придется отправлять электронные письма на более сложных языках, таких как иврит или китайский …

Благодаря!

Solutions Collecting From Web of "Отправлять электронные письма с использованием международного акцента и специальных символов"

Вы должны использовать MIME. Добавить заголовки писем:

 MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 

(Если вы уже используете MIME multipart/alternative для размещения HTML и текста в одной и той же почте, вместо этого вы добавляете Content-Type: text/plain;charset=utf-8 в подзаголовках текстовой части.)

Предполагается, что кодировка, в которую вы будете отправлять ваши «международные» символы, – это UTF-8. Если вы планируете обслуживать несколько стран, UTF-8 является единственным разумным выбором кодировки для использования во всем приложении, но если вы действительно не задумывались об этом, ваш сайт может не выполнять западноевропейскую кодировку. Убедитесь, что такие вещи, как китайские иероглифы, работают правильно на вашем сайте и в базе данных, прежде чем беспокоиться о них по почте.

Derail: есть места, где отправка почты в UTF-8 не самая эффективная вещь. Я не знаю о Китае, но в Японии все еще есть некоторые обратные и нелепые почтовые системы (особенно веб-почта), которые не могут справиться с Unicode, и вместо этого им нужно предоставить кодировку, специфичную для локали, такую ​​как Shift-JIS. Если вы концентрируетесь на этих рынках, вам часто приходится использовать iconv для создания специально закодированных версий почты. Неприятно.

Теперь, поскольку многие почтовые серверы не могут справиться с не-ASCII-символами в теле письма, вам придется их кодировать. Для этого вы можете выбрать quoted-printable или base64; quoted-printable, как правило, меньше и читается для содержимого, в котором также есть символы ASCII:

 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello! An a-acute is =C3=A1 

Функция для кодирования в этом формате – quoted_printable_encode . Однако для получения этой функции вам необходим достаточно современный PHP. если у вас его нет, вы можете установить Content-Transfer-Encoding на base64 и использовать base64_encode .

Наконец, если вы хотите включить символы не ASCII в заголовки (например, в From , To или Subject ), существует совершенно другой синтаксис:

 Subject: =?utf-8?b?QW4gYS1hY3V0ZSBpcyDDoQ==?= 

Где этот QW...== беспорядок в середине – base64_encode «A- base64_encode is» в UTF-8.

Акцентированные символы, такие как á, í, é, – работают в обычном тексте для большинства настроек браузера по умолчанию.

Азиатские, такие как китайские персонажи, обычно оказываются мусором.

Да, обычный текст + HTML рекомендуется.

Если ваш почтовый контент закодирован как UTF-8, и вы отправляете электронное письмо как UTF-8, вам не нужно использовать специальную обработку международных символов в вашей части HTML или текста.