Как включить поддержку HTML тегов в письме?

Есть код отправки письма. Как в нем включить поддержку HTML тегов?

Не приходят письма при смене этой строки:

$headers[] = "Content-type: text/plain; charset=UTF-8";


На эту:

$headers[] = "Content-type: text/html; charset=UTF-8";


Полный код:

<?php
$day = $_POST['day'];	
	$month = $_POST['month'];	
	$year = $_POST['year'];    
	$first = $_POST['first'];	
	$second = $_POST['second'];	
	$third = $_POST['third']; 
	$fourth = $_POST['fourth'];	
	$fifth = $_POST['fifth'];	
	$six = $_POST['six']; 
	$email    = $_POST['email'];    

    $mail_to  = $email;
    $subject  = 'Астролокация по дате';

    $message  = 'Здравствуйте,' . "\n\n";
    $message .= 'Дата рождения: ' . $day . ' ' . $month . ' ' . $year . "\n\n";
    $message .= 'Характер: ' . $first . "\n\n";
    $message .= 'Профессия: ' . $second . "\n\n";
    $message .= 'Акцент: ' . $third . "\n\n";
    $message .= 'Цвет: ' . $fourth . "\n\n";
    $message .= 'Камень: ' . $fifth . "\n\n";
    $message .= 'Растение/цветок: ' . $six . "\n\n";

    $headers   = array();
    $headers[] = "MIME-Version: 1.0";
    $headers[] = "Content-type: text/plain; charset=UTF-8";
    $headers[] = "From: Астрология <office@test.ru>";
    $headers[] = "Reply-To: Астрология <office@test.ru>";
    $headers[] = "X-Mailer: PHP/" . phpversion();

    mail($mail_to, $subject, $message, implode("\r\n", $headers));
?>
  • Вопрос задан
  • 1066 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Письма, в которых есть только HTML с большой вероятностью попадают в спам (в SpamAssassin - правило MIME_HTML_ONLY). Создавайте multipart-письмо, в котором будут и HTML и plain, желательно чтобы и текстовое содержимое частей совпадало.
Ответ написан
Комментировать
@Eugeny1987
Работаю с HostCMS
$headers[] = "Content-type: text/html; charset=UTF-8";
Ответ написан
devg
@devg
I am Yenior software developer
Попробуйте передавать html письма не в чистом виде, а закодированными в base64
Для этого добавьте:

$headers[] = "Content-type: text/html; charset=UTF-8";
// ...
// ...
$headers[] = "Content-Transfer-Encoding: base64";
$subject = '=?utf-8?B?'.base64_encode($subject).'?='; 
$message = chunk_split(base64_encode($message), 76, "\n"); 

mail($mail_to, $subject, $message, implode("\r\n", $headers));
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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