За последние 24 часа нас посетил 36781 программист и 7753 робота. Сейчас ищут 1722 программиста ...

Не приходит письмо на почту

Тема в разделе "PHP для новичков", создана пользователем plaksin.web, 19 окт 2022.

  1. plaksin.web

    plaksin.web Новичок

    С нами с:
    27 окт 2021
    Сообщения:
    10
    Симпатии:
    0
    Всем привет, не приходит письмо с формой обратной связи, раньше интегрировали сервис с отправкой смс, сейчас им не пользуемся, но на почту сообщения не приходят... На публичной части сайта, все проверки (имя, телефон) проходят, все как надо, после отправки сообщение, что отправлено приходит, как будто обработчик все делает, но на почту почему то не отправляет...
    поля $to, $from пока заменил

    PHP:
    1. <?php
    2. require_once 'sms.ru.php';
    3.  
    4. header("Content-type: text/html; charset=utf-8");
    5. //**********************************************
    6. if(empty($_POST['js'])){
    7.  
    8. $log =="";
    9. $error="no"; //флаг наличия ошибки
    10.  
    11.         $posName = addslashes($_POST['posName']);
    12.         $posName = htmlspecialchars($posName);
    13.         $posName = stripslashes($posName);
    14.         $posName = trim($posName);
    15.        
    16.         $posEmail = addslashes($_POST['posEmail']);
    17.         $posEmail = htmlspecialchars($posEmail);
    18.         $posEmail = stripslashes($posEmail);
    19.         $posEmail = trim($posEmail);
    20.  
    21.         $posPhone = addslashes($_POST['posPhone']);
    22.         $posPhone = htmlspecialchars($posPhone);
    23.         $posPhone = stripslashes($posPhone);
    24.         $posPhone = trim($posPhone);
    25.  
    26. //Проверка правильность имени  
    27. if(!$posName || strlen($posName)>20 || strlen($posName)<3) {
    28. $log.="<li>Неправильно заполнено поле \"Ваше имя\" (3-15 символов)!</li>"; $error="yes"; }
    29.  
    30.  
    31.  
    32. //Проверка наличия введенного текста комментария
    33. if (empty($posPhone))
    34. {
    35.     $log .= "<li>Необходимо указать телефон!</li>";
    36.     $error = "yes";
    37. }
    38.  
    39. //Проверка длины текста комментария
    40. if(strlen($posPhone)>1010)
    41. {
    42.     $log .= "<li>Слишком длинный текст, в вашем распоряжении 1000 символов!</li>";
    43.     $error = "yes";
    44. }
    45.  
    46. //Проверка на наличие длинных слов
    47. $mas = preg_split("/[\s]+/",$posPhone);
    48. foreach($mas as $index => $val)
    49. {
    50.   if (strlen($val)>60)
    51.   {
    52.     $log .= "<li>Слишком длинные слова (более 60 символов) в тексте записи!</li>";
    53.     $error = "yes";
    54.     break;
    55.   }
    56. }
    57.  
    58.  
    59. //Проверка email адреса
    60. function isEmail($posEmail)
    61.             {
    62.                 return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
    63.                         ,$posEmail));
    64.             }
    65. sleep(2);
    66.  
    67. //Если нет ошибок отправляем email
    68. if($error=="no")
    69. {
    70. //Отправка письма админу о новом комментарии
    71. $mes = "$posName заказал(а) уборку. Телефон: $posPhone";
    72.  
    73. $smsru = new SMSRU('4583F042-3386-E199-ADD8-93462ABD0A52');
    74. $data = new stdClass();
    75. $data->to = '9255064820';
    76. $data->text = "Просто уборка \r\n " . $mes ;
    77. $sms = $smsru->send_one($data);
    78.  
    79.  
    80.  
    81. $to = "myemal@gmail.com";//Ваш e-mail адрес
    82. //$mes = "$posName заказал(а) уборку. Телефон: $posPhone";
    83. $mes = "$posName заказал(а) уборку. Телефон: $posPhone";
    84.  
    85. $from = "zakaz@mysait";
    86. $sub = '=?utf-8?B?'.base64_encode('Новое сообщение с Вашего сайта').'?=';
    87. $headers = 'From: '.$from.'
    88. ';
    89. $headers .= 'MIME-Version: 1.0
    90. ';
    91. $headers .= 'Content-type: text/plain; charset=utf-8
    92. ';
    93. mail($to, $sub, $mes, $headers);
    94.  
    95.  
    96. echo "1"; //Всё Ok!
    97. }
    98. else//если ошибки есть
    99. {
    100.         echo "<p style='font: 13px Verdana;'><font color=#FF3333><strong>Ошибка !</strong></font></p><ul style='list-style: none; font: 11px Verdana; color:#000; border:1px solid #c00; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; background-color:#fff; padding:5px; margin:5px 10px;'>".$log."</ul><br />"; //Нельзя отправлять пустые сообщения
    101.  
    102. }
    103. }
     
  2. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    А откуда уверенность, что не отправляет?
    Замените mail() на запись в файл например.
    Если всё записывается, значит, либо ищите письмо в категории "спам", либо что-то с настройками мэйлера
     
    plaksin.web нравится это.
  3. plaksin.web

    plaksin.web Новичок

    С нами с:
    27 окт 2021
    Сообщения:
    10
    Симпатии:
    0
    В спаме искал, пусто...
    Подскажите что там прописать и где посмотреть пишет или нет?
     
  4. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Код (Text):
    1. file_put_contents('file.txt', $to.$sub.$mes.$headers);
     
    plaksin.web нравится это.
  5. plaksin.web

    plaksin.web Новичок

    С нами с:
    27 окт 2021
    Сообщения:
    10
    Симпатии:
    0
    Спасибо! Файл с инфой появился.....
    Блин, а это теперь где искать?)
     
  6. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Если оно раньше работало, то возможно, причина и не в нем.
    Попробуйте сначала какой-нибудь дружественный интернетпровайдеру вашего хостера адрес. На gmail например
    В любом случае, как говорится, наши полномочия тут всё.
     
    plaksin.web нравится это.
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    Админу, конечно, есть работа. Но в плане программирования тоже далеко не все сделано.
    --- Добавлено ---
    GMail сейчас свирепствует. Нужно все делать, как полагается. Халява не прокатывает.
     
  8. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    OK.
    ukr.net
     
  9. plaksin.web

    plaksin.web Новичок

    С нами с:
    27 окт 2021
    Сообщения:
    10
    Симпатии:
    0
    О да!!! Спасибо, оказалось хостинг забанил, за спам, почему то))) Сняли ограничение, mail() заработал!!!)))
     
  10. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Скорее всего потому, что домен из "from" не соответствовал домену сервера, с которого отправляли.
    Как правило, хостинги предоставляют почтовые аккаунты. Вот их туда и прописывайте.
     
  11. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Такого бредового способа "очистки" кода я ещё не видел.... Добавим слеши, чтоб через одну строчку удалить слеши... А самое главное, потом всё это отправляем как text/plain, для которого вообще ничего из приведённого неважно...
     
    miketomlin нравится это.
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.861
    Симпатии:
    656
    Он и не обязан соответствовать. Это разные параметры. Домен сервера в HELO/EHLO проверяется по IP сервера (при помощи PTR).
    --- Добавлено ---
    «Домен из "from"» может быть связан с IP сервера по SPF. Причем речь прежде всего не о заголовке From, а о др. FROM ;)
    --- Добавлено ---
    Хотя можно и с доменом сервера связать через т.н. «a-механизм», но он реже используется.
     
  13. Drunkenmunky

    Drunkenmunky Старожил

    С нами с:
    12 авг 2020
    Сообщения:
    1.511
    Симпатии:
    284
    Разработчикам и настройщикам спам-фильтров эту информацию донесите.
    А так-то - да, не обязан