Как исправить проблему с кодировкой?

Код отправки:

spoiler
<?

$key = md5($password);					
					$mail='
					<style>
.msgBody{width: 60%;margin-left: 20%;border-radius: 10px;background: #fff;color: #222;font-family: Tahoma;border: 1px solid #ebebeb;overflow: hidden;}
.msgBody .header{width: 100%;padding-top: 20px;padding-bottom: 20px;background: #2a394f;}	.msgBody .content{width: 100%;padding-top: 80px;padding-bottom: 80px;text-align: center;}
.msgBody .content .btn{width: 40%;margin-left: 30%;height: 30px;line-height: 30px;font-size: 18px;color: #fff;background: #0fa8f4;border-radius: 7px;cursor: pointer;padding-top: 20px;padding-bottom: 20px;text-align: center;margin-top: 40px;}
.msgBody .content a{text-decoration: none;}
</style>
<div class="msgBody">
	<div class="header">
		<img src="http://domain.ru/img/logo.png" style="width: 30%; height: auto; margin-left: 35%;">		
	</div>
	<div class="content">
		'.$name.', здравствуйте!<br>
		Для активации нажмите на кнопку ниже:<br>
		<a href="http://domain.ru/activate.php?key='.$key.'&l='.$phone.'"><div class="btn">Активировать аккаунт</div></a>
	</div>
</div>';
					$mail=convert_cyr_string($mail,"w","k");
					$hed="Content-Type: text/html; charset=KOI8-R;
					From: infoMail<info@domain.ru>;
					To: Клиент;
					Subject: Активация;
					Content-Type: text/html; charset=KOI8-R";
					$hed=convert_cyr_string($hed,"w","k");					 
					mail("its189@mail.ru","Активация",$mail,$hed);

?>


Отправляю в KOI8-R, но приходят кракозябры
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
По стандарту в заголовках письма должны использоваться только символы из основного ASCII-набора (0x00-0x7F). Все остальные символы должны быть закодированы.
Если письмо содержит HTML-часть, то крайне желательно добавить соответствующую по тексту PLAIN-часть. Тип письма должен быть multipart/alternative.
При несоблюдении этих условий резко возрастает вероятность попадания письма в спам.
Кодировку лучше использовать UTF-8, как наиболее универсальную.
$fromName = "=?UTF-8?B?" . base64_encode($fromName) . "?=";
$toName = "=?UTF-8?B?" . base64_encode($toName) . "?=";
$subject = "=?UTF-8?B?" . base64_encode($subject) . "?=";
$boundary = md5(rand());
$headers = "From: {$fromName} <${fromEmail}>\r\n".
           "MIME-Version: 1.0\r\n" .
           "Content-type: multipart/alternative; boundary={$boundary}\r\n"; 
$message = "\r\n--{$boundary}\r\n" .
           "Content-Type: text/plain; charset=UTF-8\r\n\r\n" .
           $plainMessage .
           "\r\n--{$boundary}\r\n" .
           "Content-Type: text/html; charset=UTF-8\r\n\r\n" .
           $htmlMessage .
           "\r\n--{$boundary}--\r\n";
mail("{$toName} <{$toEmail}>", $subject, $message, $headers);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы