@astrotrain

Как отослать корректное хтмл-письмо через php на gmail?

Есть простой пхп код, который в цикле отсылает всем адресатам хтмл-страничку

$code = '';
      $message = file_get_contents($this->message_file);
      $this->message = base64_encode($message);
      foreach($this->to as $to){
         $code .= '
$to = "'.$to.'";

$headers  = "MIME-Version: 1.0" . "\n";
$headers .= "Content-type: text/html; charset=UTF-8" . "\n";
$headers .= "From: '. $this->from .' " . "\n";

$subject = "Message sent from  ".$_SERVER[\'SERVER_NAME\'];


mail($to, $subject, base64_decode("'.$this->message.'"), $headers);
      ';


Но проблема в том что в ящик приходит неформатированное сообщение в виде текста без стилей и прочего (хотя в теле сообщения, если посмотреть, все на месте). Как сделать так чтобы гугл распознавал сообщение как html?
  • Вопрос задан
  • 497 просмотров
Пригласить эксперта
Ответы на вопрос 2
artem78
@artem78
Заканчивающий разработчик
Не изобретайте велосипед. Пользуйтесь готовыми решениями, например - phpmailer. Тогда процедура отправки будет выглядеть следующим образом:
<?php

$mail = new PHPMailer;
$mail->setFrom('your@email.ru'); // Email отправителя

// Можно отправить письмо нескольким адресатам за один раз
$recipients = ['first@email.ru', 'second@email.ru', 'third@email.ru'];
foreach ($recipients as $recipient) {
	$mail->addAddress($recipient); 
	//$mail->AddBCC($recipient); // Или можно отправить скрытую копию, чтобы получатели не видели друг друга
}              

$mail->Subject = 'Заголовок письма';
$mail->Body = '<b>Здесь текст письма в формате html.<b>';
$mail->isHTML(true);  // Формат HTML

$mail->send();
Ответ написан
Стили в письме вот так сделаны?
https://www.codecademy.com/articles/html-inline-styles

Попробуйте вот так
quoted_printable_encode("тело письма hrml")
и header
Content-Transfer-Encoding: quoted-printable
Content-type: text/html; charset=utf-8
MIME-Version: 1.0


DKIM-подпись - обязательно нужно делать если не сделано. Иначе 100% в спам будет всегда падать.

mail($email, "=?utf-8?b?" . base64_encode("Тема письма") . "?=", quoted_printable_encode("тело письма с html"), $header);
Ответ написан
Ваш ответ на вопрос

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

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