Не доходят письма из формы (PHP+AJAX)

(Ответов: 4, Просмотров: 2500)
  1. Новичок
    • Регистрация: 05.04.2012
    • Сообщений: 17
    • Репутация: 0
    Доброго времени суток, дорогие форумчане. Столкнулся с такой проблемой. При обработке запроса обратной связи, все проходит "гладко", выводит сообщении о том что письмо отправлено, но на самом деле ничего не приходит. Уже всю голову сломал...
    HTML
    Код HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.min.js"></script> <script type="text/javascript" src="/js/js-form.js"></script> <link rel="stylesheet" type="text/css" href="/css/style.css"> <title>Форма обратной связи</title> </head> <body> <center><div align="left" id="cor5" class="sidebarForm"> <h4>Задать новый вопрос:</h4> <div align="center" id='loadBar'></div> <form action="#" method="post" id="cForm2"> <label>Ваше имя:</label> <div class="input" id="cor5"> <input value="" id="posName" type="text" /> </div> <label>Ваш email:</label> <div class="input" id="cor5"> <input value="" id="posEmail" type="text" /> </div> <label>Ваше сообщение:</label> <div class="textarea" id="cor5"><textarea id="posText"></textarea></div> <button type="button" id="send">Отправить --></button> </form></div></center> </body> </html>
    Сам обработчик.
    PHP код:
    <?php
    header
    ("Content-type: text/html; charset=utf-8");
    //**********************************************
    if(empty($_POST['js'])){

    $log =="";
    $error="no"//флаг наличия ошибки

            
    $posName addslashes($_POST['posName']);
            
    $posName htmlspecialchars($posName);
            
    $posName stripslashes($posName);
            
    $posName trim($posName);
            
            
    $posEmail addslashes($_POST['posEmail']);
            
    $posEmail htmlspecialchars($posEmail);
            
    $posEmail stripslashes($posEmail);
            
    $posEmail trim($posEmail);

            
    $posText addslashes($_POST['posText']);
            
    $posText htmlspecialchars($posText);
            
    $posText stripslashes($posText);
            
    $posText trim($posText);

    //Проверка правильность имени    
    if(!$posName || strlen($posName)>20 || strlen($posName)<3) {
    $log.="<li>Неправильно заполнено поле \"Ваше имя\" (3-15 символов)!</li>"$error="yes"; }

    //Проверка email адреса
    function isEmail($posEmail)
                {
                    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"
                            
    ,$posEmail));
                } 
                
    if(
    $posEmail == '')
                    {
        
    $log .= "<li>Пожалуйста, введите Ваш email!</li>";
        
    $error "yes";
                      
                    }            

    else if(!
    isEmail($posEmail))
                    {
                       
        
    $log .= "<li>Вы ввели неправильный e-mail. Пожалуйста, исправьте его!</li>";
        
    $error "yes";
                    }

    //Проверка наличия введенного текста комментария
    if (empty($posText))
    {
        
    $log .= "<li>Необходимо указать текст сообщения!</li>";
        
    $error "yes";
    }

    //Проверка длины текста комментария
    if(strlen($posText)>1010)
    {
        
    $log .= "<li>Слишком длинный текст, в вашем распоряжении 1000 символов!</li>";
        
    $error "yes";
    }

    //Проверка на наличие длинных слов
    $mas preg_split("/[\s]+/",$posText);
    foreach(
    $mas as $index => $val)
    {
      if (
    strlen($val)>60)
      {
        
    $log .= "<li>Слишком длинные слова (более 60 символов) в тексте записи!</li>";
        
    $error "yes";
        break;
      }
    }
    sleep(2);

    //Если нет ошибок отправляем email  
    if($error=="no")
    {
    //Отправка письма админу о новом комментарии
    $to "design@mango-interactive.ru";//Ваш e-mail адрес
    $mes "Человек по имени $posName отправил Вам сообщение из формы обратной связи Вашего сайта: \n\n$posText";

    $from $posEmail;
    $sub '=?utf-8?B?'.base64_encode('Новое сообщение с Вашего сайта').'?=';
    $headers 'From: '.$from.'
    '
    ;
    $headers .= 'MIME-Version: 1.0
    '
    ;
    $headers .= 'Content-type: text/plain; charset=utf-8
    '
    ;
    mail($to$sub$mes$headers);
    echo 
    "1"//Всё Ok!
    }
    else
    //если ошибки есть

            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 />"//Нельзя отправлять пустые сообщения

    }
    }
    Js

    Код:
    $(document).ready(function() {
    // Форма обратной связи................................./
    
    var regVr22 = "<div><img style='margin-bottom:-4px;' src='../load.gif' alt='Отправка...' width='16' height='16'><span style='font: 11px Verdana; color:#333; margin-left:6px;'>Сообщение обрабатывается...</span></div><br />";
    
    $("#send").click(function(){
    		$("#loadBar").html(regVr22).show();
    		var posName = $("#posName").val();
    		var posEmail = $("#posEmail").val();
    		var posText = $("#posText").val();
    		$.ajax({
    			type: "POST",
    			url: "../send.php",
    			data: {"posName": posName, "posEmail": posEmail, "posText": posText},
    			cache: false,
    			success: function(response){
    		var messageResp = "<p style='font-family:Verdana; font-size:11px; color:green; border:1px solid #00CC00; padding:10px; margin:20px; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; background-color:#fff;'>Спасибо, <strong>";
    		var resultStat = "!</strong> Ваше сообщение отправлено!</p>";
    		var oll = (messageResp + posName + resultStat);
    				if(response == 1){
    				$("#loadBar").html(oll).fadeIn(3000);
    				$("#posName").val("");
    				$("#posEmail").val("");
    				$("#posText").val("");
    				} else {
    		$("#loadBar").html(response).fadeIn(3000); }
    										}
    		});
    		return false;
    });
    
    
    });
    • 0
  2. Sapienti sat Аватар для brainix
    • Регистрация: 01.01.2013
    • Сообщений: 1,925
    • Записей в дневнике: 1
    • Репутация: 817
    • Webmoney BL: ?
    Начните с самого начала - проверьте работает ли обычная отправка на хостинге через mail() PHP.
    Дальше проверьте передались ли данные, да хоть записью в бд.
    • 0
  3. Дипломник
    • Регистрация: 15.07.2013
    • Сообщений: 189
    • Репутация: 43
    • Webmoney BL: ?
    Имеет смысл заглянуть в логи почтового робота. Стандартно они лежат где-то в /var/log (я имею в виду vds или vps). Там обычно указывается причина ошибки - неверные заголовки, сервер недоступен, отправитель заблокирован и т.д. и т.п. Был случай, когда со взломанного сайта рассылали спам, а потом хостер заблочил отправку почты. Внешне ошибок нет, а в логах пишется - обратитесь в техподдержку.
    • 0
  4. Banned
    • Регистрация: 03.03.2012
    • Сообщений: 163
    • Репутация: 11
    eMarketer,как вариант можно в конце обработчика вписать эхо с переменными, а отправку закоментить... Так узнаете, приходят ли вообще данные. Если не поможет, проверяйте функцию mail() и почтовый ящик (вдруг письма в спам фильтруются...)
    • 0
  5. Где бабло? Аватар для Cyberflow
    • Регистрация: 13.12.2010
    • Сообщений: 502
    • Репутация: 191
    • Webmoney BL: ?
    Сталкивался с похожей проблемой. Ломал голову, попросил знакомого прогера глянуть. Все было в порядке. Как оказалось, проблема была на стороне хостера.
    Цитирую:
    "Добрый День, исправили, айпи с которого отсылались письма был заблокирован Gmail-ом, и за вчерашней рассылки одного из пользователей.

    Айпи сменили, письма доходят."
    • 1

    Спасибо сказали:

    Я Джин(10.04.2014),

Похожие темы

Темы Раздел Ответов Последний пост
Обработчик формы присылает пустые письма
Web программирование 6 20.02.2014 22:51
Непонятные письма
Оффтоп и свободные темы 2 14.01.2014 02:38
Минусовый BL и деньги не доходят О_0
Прочее 14 05.09.2013 23:40
Отправка письма на PHP
Web программирование 6 01.06.2013 21:04
Письма по месяцам
Поисковые системы 5 27.04.2012 01:26

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры