Я отправляю почту с использованием php, а тема письма имеет акценты.
Я получаю странные символы в Outlook вместо акцентированных символов. Если я увижу электронную почту в веб-клиенте электронной почты, я вижу, что тема идеальна.
Это код, который im использует для отправки электронной почты:
$to = 'whateveremail@whatever.com'; $subject = '[WEBSITE] áccent – tésts'; $message = '<p>Test message</p> $headers = 'MIME-Version: 1.0' . "\r\n"; $headers.= 'From:equipothermomix@thermomix.com' . "\r\n"; $headers.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; mail($to, $subject, $message , $headers);
Как я могу решить проблему, мне нужно использовать другую кодировку?
Единственный надежный способ отправки электронной почты – использовать обычный 7-битный ASCII, поэтому вам нужно правильно закодировать строки, если хотите использовать что-либо еще. В вашем случае [WEBSITE] áccent – tésts
должны быть закодированы как (например) =?windows-1252?B?W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz?=
, Где строка делится как:
=?windows-1252?B?W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz?= ^ ^ ^ | | | Charset | Data | Base64
Проверьте:
echo base64_decode('W1dFQlNJVEVdIOFjY2VudCCWIHTpc3Rz'); // [WEBSITE] áccent – tésts
Это всего лишь пример одного из возможных способов кодирования строк, отличных от ASCII.
При отправке электронной почты есть много мелких деталей, которые требуют внимания. Вот почему рано или поздно вы в конечном итоге используете подходящий почтовый пакет, такой как Swift Mailer или PHPMailer .
Если существует сочетание типов кодирования, специальные символы уничтожаются.
PHP-взаимодействие с кодировкой HTML Charset
PHP также имеет возможность кодирования сообщений.
mb_language('uni'); // mail() encoding
PHP – многобайтовая строка