Не всегда происходит отправка письма

192
29 апреля 2018, 18:19

Есть send.php, в нем проблем вроде нет.

<?php
$msg = "<h3>Обратая связь</h3>";
if(isset($_POST['name'])) { $msg .= "<br><strong>Имя:</strong> ".$_POST['name'];}
if(isset($_POST['tel'])) { $msg .= "<br><strong>Телефон:</strong> ".$_POST['tel'];}
if(isset($_POST['phone'])) { $msg .= "<br><strong>Телефон:</strong> ".$_POST['phone'];}
if(isset($_POST['mail'])) { $msg .= "<br><strong>E-mail:</strong> ".$_POST['mail'];}
if(isset($_POST['firstvalue'])) { $msg .= "<br><strong>Экологический стандарт:</strong> ".$_POST['firstvalue'];}
if(isset($_POST['secondvalue'])) { $msg .= "<br><strong>Что-то еще:</strong> ".$_POST['secondvalue'];}
if(isset($_POST['thirstvalue'])) { $msg .= "<br><strong>Последний пункт:</strong> ".$_POST['thirstvalue'];}

$EOL = "\r\n";
$boundary     = "--".md5(uniqid(time()));
$headers    = "MIME-Version: 1.0;$EOL";
$headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";
$headers   .= "From: asd@gmail.com";
$multipart  = "--$boundary$EOL";
$multipart .= "Content-Type: text/html; charset=utf8$EOL";
$multipart .= "Content-Transfer-Encoding: base64$EOL";
$multipart .= $EOL;
$multipart .= chunk_split(base64_encode($msg));
$to  = 'asdf@gmail.com';
$subject = "Обратная связь";
mail($to, $subject, $multipart, $headers);
header('Location: https://moonway.by/aks?success=ok');

?>

И есть два модальных окна с формами, использующими этот скрипт отправки В первом только одно поле - телефон. Отправка письма из этой формы работает.

<form class="under-construction" method="post" action="send.php">
   <div class="form-group email">
       <input class="form-control email" type="tel" name="tel"placeholder="Введите Ваш номер">
   </div>
   <button data-hover="Заказать звонок" class="btn btn-default btn-block progress-button" type="submit">
       <span class="button-label">Заказать звонок</span></button>
 </form>

И вторая форма, не работает. Суть в том, что значения в input hidden подставляет js-скрипт.

<form class="under-construction" method="post" action="send.php">
                <div class="form-group email">
                    <input class="form-control name" type="text" name="name" placeholder="Введите Ваше имя" required>
                    <input class="form-control tel" type="tel" name="phone" placeholder="Введите Ваш номер телефона" required>
                    <input class="form-control email" type="email" name="mail" placeholder="Введите Ваш e-mail">
                    <input type="hidden" name="firstvalue" id="firstvalue">
                    <input type="hidden" name="secondvalue" id="secondvalue">
                    <input type="hidden" name="thirstvalue" id="thirstvalue">
                </div>
                <button data-hover="Отправить" class="btn btn-default btn-block progress-button" type="submit">
                    <span class="button-label">Отправить</span>                         
            </form>

Пробовала из send.php удалять строки, отвечающие именно за эти скрытые инпуты, и письма отправлялись. В чем может быть проблема?

Answer 1

Пару способов для получения ошибки от php, которые должны дать понять в чем проблема и как с ней бороться.

<?php 
$msg = "<h3>Обратая связь</h3>"; 
if(isset($_POST['name'])) { $msg .= "<br><strong>Имя:</strong> ".$_POST['name'];} 
if(isset($_POST['tel'])) { $msg .= "<br><strong>Телефон:</strong> ".$_POST['tel'];} 
if(isset($_POST['phone'])) { $msg .= "<br><strong>Телефон:</strong> ".$_POST['phone'];} 
if(isset($_POST['mail'])) { $msg .= "<br><strong>E-mail:</strong> ".$_POST['mail'];} 
if(isset($_POST['firstvalue'])) { $msg .= "<br><strong>Экологический стандарт:</strong> ".$_POST['firstvalue'];} 
if(isset($_POST['secondvalue'])) { $msg .= "<br><strong>Что-то еще:</strong> ".$_POST['secondvalue'];} 
if(isset($_POST['thirstvalue'])) { $msg .= "<br><strong>Последний пункт:</strong> ".$_POST['thirstvalue'];} 
 
/*  
  Для начала можно проверить несколькими способами формирования  
  сообщения заполняя поля firstvalue, secondvalue, thirstvalue и  
  если php выдает строку а не ошибку при формировании тогда идем  
  ниже (не используя print_r($msg);) 
*/ 
print_r($msg); exit; 
 
 
$EOL = "\r\n"; 
$boundary     = "--".md5(uniqid(time())); 
$headers    = "MIME-Version: 1.0;$EOL"; 
$headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL"; 
$headers   .= "From: asd@gmail.com"; 
 
$multipart  = "--$boundary$EOL"; 
$multipart .= "Content-Type: text/html; charset=utf8$EOL"; 
$multipart .= "Content-Transfer-Encoding: base64$EOL"; 
$multipart .= $EOL; 
$multipart .= chunk_split(base64_encode($msg)); 
 
$to  = 'asdf@gmail.com'; 
 
$subject = "Обратная связь"; 
 
// Здесь мы вставляем проверку на отправку письма 
$result = mail($to, $subject, $multipart, $headers); 
if (!$result) { 
    // и если произошла ошибка выводим сообщение 
    print_r(error_get_last()['message']); 
    exit; 
} 
 
header('Location: https://moonway.by/aks?success=ok');

Answer 2

Вы уверены что при клике на кнопку отправить во второй форме , происходит отправка формы?

Просто у вас там тег button не закрыт.

И зачем в тег button совать <span class="button-label">Отправить</span> , не проще тег button стилизовать?

READ ALSO
переменная окружения в ubuntu

переменная окружения в ubuntu

Есть учебно-тренировочный проект topjava, который использует переменную окружения TOPJAVA_ROOT ( путь к корню проекта) для записи логов и чтения конфиговПеременная...

213
Dagger2 выдает ошибку приведения гд что не так?

Dagger2 выдает ошибку приведения гд что не так?

Хочу получить Receiverделаю следующие шаги но прога падает

192
Cannot resolve method &#39;setContentView&#39; Cannot resolve method &#39;getSupportFragmentManager&#39;

Cannot resolve method 'setContentView' Cannot resolve method 'getSupportFragmentManager'

В общем ,решил внедрить в приложение google карты через фрагменты,в конченом итоге получил 2 ошибки:"Cannot resolve method 'setContentView' Cannot resolve method 'getSupportFragmentManager'",не...

352
Считать строку, используя стримы

Считать строку, используя стримы

Есть такой файл с такими строками:

199