@psiklop

Phpmailer кракозябры вместо кириллицы?

Приходят такие буковки, письмо в UTF-8
ЗдравÑтвуйте, ЖилÑков Павел Витальевич!

Использую Phpmailer с SMTP отправкой, так как mail функция залетает в спам.
Гуглил и все перепробовал безрезультатно.

$mail = new PHPMailer(true);

		try {			
			$mail->charSet = "UTF-8";
			$mail->isSMTP();
			$mail->Host = 'ssl://smtp.yandex.ru';
			$mail->SMTPAuth = true;
			$mail->Username = $mail_settings["smtp"]["login"];
			$mail->Password = $mail_settings["smtp"]["pass"];
			$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
			$mail->Port = 465;
			
			$mail->setFrom($shop_email, $shortshopname);
			$mail->addAddress($email);
			$mail->addReplyTo($reply, $reply_a);

			$mail->isHTML(true);
			$mail->Subject = $theme;
			$mail->Body = $body;
			$text = \Soundasleep\Html2Text::convert($body, array('ignore_errors' => true));
			$mail->AltBody = $text;

			if ($mail->send()) $response = true;
		} catch (Exception $e) {}
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 1
@psiklop Автор вопроса
Написал свою функцию, которая переводит кириллицу в HTML коды, пока так использую

$mail->Subject = "=?UTF-8?B?".base64_encode($theme)."?=";
$mail->Body = func_сyrillic_html_encode($body);

function func_сyrillic_html_encode($text)  {
	$patterns = preg_split("/(?<!^)(?!$)/u", "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя");
	$html = array();
	foreach ($patterns as $i => $letter) {
		$patterns[$i] = "/$letter/u";
		$html[] = "&#".($i+1040).";";
	}		
	return preg_replace($patterns, $html, $text);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы