Как исправить кодировку письма php
Есть такая вот функция для отправки сообщений:
public function send_email($email, $mess)
{
$subject = 'Проверка работы рассылки';
// mail($email, 'sd', $mess, 'From:'.$from);
$headers = "MIME-Version: 1.0\n" ;
$headers .= "Content-type: text/html; charset=UTF-8; \r\n";
//$headers .= "From: $from\r\n";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
@mail($email, $subject, $mess, $headers);
}
Отправляю сообщения вставляя в HTML шаблон с такой шапкой:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- So that mobile will display zoomed in -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- enable media queries for windows phone 8 -->
<meta name="format-detection" content="telephone=no"> <!-- disable auto telephone linking in iOS -->
Если в шаблоне прописать слово, то нормально русские символы видны, а если беру с базы данных (там кодировка UTF-8), то все русские символы слетают на знаки вопроса "?????????....". Уже пробовал ставить в функции отправки сообщение кодировку windows-1251 и CP1251, нечего не помогло.
Источник: Stack Overflow на русском