YuliyaG1
@YuliyaG1

Почему не приходят письма на почту с сайта вордпресс?

Здравствуйте.
Подскажите, пожалуйста, куда нужно смотреть и что искать?
Знаю, что неоднократно задают вопросы на эту тему. Перечитала много чего, но ответ на свой вопрос не нашла.
Сайт работает на вордпресс - https://potolki-plafond.ru/
Ранее письма на почту приходили без проблем. Несколько дней назад письма перестали приходить, хотя на сайте пишет что ВАШЕ ПИСЬМО ОТПРАВЛЕНО.
Для отправки писем использую файл email-send.php
Вот сам код из этого файла
<?php
    if ($_POST){

        function mime_header_encode($str, $data_charset, $send_charset) { 
            if($data_charset != $send_charset)
            $str=iconv($data_charset,$send_charset.'//IGNORE',$str);
            return ('=?'.$send_charset.'?B?'.base64_encode($str).'?=');
        }

        class TEmail {
            public $from_email;
            public $from_name;
            public $to_email;
            public $to_name;
            public $subject;
            public $data_charset='UTF-8';
            public $send_charset='windows-1251';
            public $body='';
            public $type='text/plain';
            function send(){
                $dc=$this->data_charset;
                $sc=$this->send_charset;
                $enc_to=mime_header_encode($this->to_name,$dc,$sc).' <'.$this->to_email.'>';
                $enc_subject=mime_header_encode($this->subject,$dc,$sc);
                $enc_from=mime_header_encode($this->from_name,$dc,$sc).' <'.$this->from_email.'>';
                $enc_body=$dc==$sc?$this->body:iconv($dc,$sc.'//IGNORE',$this->body);
                $headers='';
                $headers.="Mime-Version: 1.0\r\n";
                $headers.="Content-type: ".$this->type."; charset=".$sc."\r\n";
                $headers.="From: ".$enc_from."\r\n";
                return mail($enc_to,$enc_subject,$enc_body,$headers);
            }
        }



        $name = $_POST['name'];
        $date = $_POST['date'];
        $time = $_POST['time'];
        $phone = $_POST['phone'];
        $email = $_POST['email'];
        $url = $_POST['url'];
        $address = $_POST['address'];
        $tovar = $_POST['tovar'];



        $name_company = $_POST['name_company'];
        $name_training = $_POST['name_training'];
        $quantity = $_POST['quantity'];

        $demands = $_POST['demands'];


        if ($name) {
          $message .= "Имя - ".$name;
        }
        if ($phone) {
          $message .= "\nТелефон - ".$phone;
        }

        if ($email) {
          $message .= "\nemail - ".$email;
        }
        if ($date) {
          $message .= "\nДата - ".$date;
        }
        if ($time) {
          $message .= "\nВремя - ".$time;
        }
         if ($address) {
          $message .= "\nАдрес - ".$address;
        }
         if ($tovar) {
          $message .= "\nТовар - ".$tovar;
        }

        if ($name_company) {
          $message .= "\nНазвание компании - ".$name_company;
        }

        if ($name_training) {
          $message .= "\nНазвание треннинга - ".$name_training;
        }

        if ($quantity) {
          $message .= "\nКол-во человек - ".$quantity;
        }

        if ($demands) {
          $message .= "\nСообщение - ".$demands;
        }
      

  
      $emailgo= new TEmail; 
        $emailgo->from_email= 'SIP'; 
        $emailgo->from_name= 'SIP';
        $emailgo->to_email= 'studio@yandex.ru';
        $emailgo->to_name= 'SIP';
        $emailgo->subject= 'Заявка с сайта Potolki-Plafond:';
        $emailgo->body= $message; 
        $emailgo->send(); 
        echo $messsage; //для debug
    } 

    else{
        echo 'access denial';
    }
?>


В админке ранее висело сообщение о том, что нужно ОБНОВИТЬ PHP до более свежей версии. Сейчас этого сообщения нет. Может ли это быть связано друг с другом?

Заранее всем спасибо!!!
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
Kozack
@Kozack Куратор тега WordPress
  1. Не используйте PHP функцию mail() когда работаете в WordPress. Для этого у него есть — wp_mail(). Советую использовать её, так как это позволит сторонним плагинам работать.
  2. Проблема может быть во внутреннем фильтре почтового клиента. Такие письма не попадают в спам или ещё куда. Они просто нигде не отображаются. Попробуйте отправить письмо на какой-то случайный емайл, например от бота @fakemailbot. Там нет никаких фильтров.

    1. Если письма туда приходят, значит ваш сервер их отправляет, но почтовая служба блокирует. В этом случае советую попробовать отправлять не со своего сервера, а использовать сторонние службы, например Gmail, Yandex. Один из способов реализации — через плагин WP Mail SMTP от WPForms

    2. Если письма не приходят на такую почту, значит, скорее всего ваш сервер их не отправляет. В этом случае проверяйте что возвращает wp_mail(). Изучайте логи сервера.



Ответ написан
YuliyaG1
@YuliyaG1 Автор вопроса
Пока проблему, к сожалению, не удалось решить.
Программисты на хостинге сказали что нужно смотреть логи сервера.
Посмотрела логи - при отправки заявки из форм выдает ошибку.

[Tue Jul 07 18:58:52.537406 2020] [fcgid:warn] [pid 29253] [client 176.59.48.142:40208] mod_fcgid: stderr: PHP Notice:  Undefined variable: messsage in /home/admin/web/potolki-plafond.ru/public_html/wp-content/themes/potolki-plafond/email-send.php on line 103, referer: https://potolki-plafond.ru/


И такая ошибка на каждое поле из формы.

[Tue Jul 07 18:58:35.018688 2020] [fcgid:warn] [pid 28915] [client 176.59.48.142:40204] mod_fcgid: stderr: PHP Warning:  call_user_func_array() expects parameter 1 to be a valid callback, function 'create_my_post_types' not found or invalid function name in /home/admin/web/potolki-plafond.ru/public_html/wp-includes/class-wp-hook.php on line 287, referer: https://potolki-plafond.ru/pongs/

[Tue Jul 07 18:58:52.537375 2020] [fcgid:warn] [pid 29253] [client 176.59.48.142:40208] mod_fcgid: stderr: PHP Notice:  Undefined variable: message in /home/admin/web/potolki-plafond.ru/public_html/wp-content/themes/potolki-plafond/email-send.php on line 62, referer: https://potolki-plafond.ru/


Подскажите, как можно устранить ошибку.
Ответ написан
Ваш ответ на вопрос

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

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