Задать вопрос
@Yusaki

Gmail.com не принимает письма от функции mail() в php скрипте из-за $header, как настроить?

есть php скрипт который отправляет письма, при чем для почтовиков типа mail.ru или yandex.ru работает корректно, то есть письма приходят, но gmail.com на отрез отказывается их принимать (нет даже в спаме), скорее всего дело в настройке $headers, помогите настроить так что бы и gmail.com мог получать письма. вот код:
<?php
  header('Content-Type: text/html; charset=utf-8');
  /* Проверка на заполнение полей */
  if (isset($_POST['phone'])) {
    $name     = $_POST['name'];
    $tel      = $_POST['phone'];
    $email    = $_POST['email'];
    $referer  = $_POST['referer'];
    $title    = $_POST['title'];
   
    /* Убираем все лишние пробелы и переносы строк  и преобразуем все теги html в символы*/
    $name     = htmlspecialchars(trim($name));
    $tel      = htmlspecialchars(trim($tel));
    $email    = htmlspecialchars(trim($email));
 
    /* Формируем сообщение */
    $mail = "***@***.ru";
    $subject = $title; //тема письма
    $message = "<html><head></head><body>";
    $message .= "***";             
    $message .= "</body></html>";  
        
    $mess  = "<html><head></head><body>";
    $mess .= "Благодарим Вас за оставленную заявку!<br>";
    $mess .= "если у Вас возникли вопросы напишите нам по адресу: $mail";
    $mess .= "</table></body></html>"; 
    
    function adopt($text) {
    	return '=?UTF-8?B?'.base64_encode($text).'?=';
    }
    
    $headers = "MIME-Version: 1.0".PHP_EOL."Content-Type: text/html; charset=utf-8".PHP_EOL.'From: '.adopt('***').' <no-reply@***.ru>'.PHP_EOL;
 
    /* Отправка */
    $sendmail = mail ($mail,$subject,$message,$headers);
    $sendmail_2 = mail ($email,$subject,$mess,$headers);
    echo $title;
  }
 
?>

ps: не сильно разбираюсь в этой теме, заранее спасибо =)
  • Вопрос задан
  • 2094 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Решения вопроса 1
@Yusaki Автор вопроса
вопрос решился добавлением в переменную $headers полей "Content-Transfer-Encoding: utf-8" для корректного отображения в почтовиках и 'Reply-To:no-reply@****.ru' (обратный адрес, без него не приходило сообщение в gmail.com)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Из явных проблем - отсутствует заголовок Content-Transfer-Encoding: 8bit, он нужен, т.к. в сообщении есть не-ASCII символы и не генерируются Date и Message-ID.
Но скорей всего, проблема комплексная, почитайте
https://habrahabr.ru/company/mailru/blog/239963/
и проверьте все по пунктам, особенно SPF/DKIM, GMail очень подозрительно относится к почте без аутентификации.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы