Jump to content
  • Sign Up
  • 0

Обязательные и не обязательные поля к отправке SMTP mail PHP


Анна В.

Question

Всем привет!

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

Необходимо, чтобы поле message было не обязательным к отправке.

Сейчас ситуация следующая: письма из формы уходят на почту, но если поле сообщение не заполнено, письмо не уходит.

 

                              <div class="btn-greenbackground pt-40 pb-15 pl-30">                                
                                        <div class="adaptive-header"><h30><p style="line-height: 0.35"><b>Отправьте заявку на участие</b><br/>
                                                                           __________________________</p></h30>
                                </div></div>
                                <!-- атрибут required говорит, что заполнение поля обязательно -->
<form method="POST" id="feedback-form">
<div class="btn-greenbackground p-30 pt-20 pl-30 pr-30 pb-25">
                        
                                                                        
                                <div class="row">
                <div class="col-sm-6">
                                        <div class="form-group">   
                                <input type="text" name="nameFF" style="border-radius:2px;border-style:none;height:40px;width:100%;color:black" required placeholder="Ваше имя" x-autocompletetype="name">
                  </div>                        
                </div>
                <div class="col-sm-6 mt-5">
                  <div class="form-group">
            <p style='font-size:10px ; font-family: Arial, sans-serif;'>*Укажите, пожалуйста, Ваше имя и мы отправим Вам именное приглашение</p>
                  </div>
                </div>
              </div>
              <div class="row">
                <div class="col-sm-6">
                  <div class="form-group">
                                <input type="email" name="contactFF" style="border-radius:2px;border-style:none;height:40px;width:100%;color:black" required placeholder="Ваш email" x-autocompletetype="email"> 
                  </div>
                </div>
              <div class="col-sm-6 mt-5">
                  <div class="form-group">
<p style='font-size:10px ; font-family: Arial, sans-serif;'>*Укажите, пожалуйста, Ваш email, на который будет отправлено приглашение</p> 
                  </div>
                </div>
              </div>
                           
         <div class="row">
                <div class="col-sm-6">
                  <div class="form-group">
        <input type="text" name="messageFF" placeholder="Ваш телефон" style="border-radius:2px;border-style:none;height:40px;width:100%;color:black">
          </div>
                </div>
        
          <div class="col-sm-6 mt-5">
                  <div class="form-group">
<p style='font-size:10px ; font-family: Arial, sans-serif;'>*Укажите Ваш телефон для получения смс- уведомлений о мероприятиях</p> 
                  </div>
                </div>
              </div>    </div>
         <div class="form-group">  
                                         <button type="submit" class="btn btn-flat btn-theme-colored btn-herbal text-uppercase col-md-12 col-sm-12 col-xs-12 mt-10 border-left-theme-color-2-4px " data-loading-text="Пожалуйста, подождите...">Принять участие</button>
              
</div>
        </form>  
<p style='font-size:11px; font-family: Arial; san-serif; align=’right'>Нажимая кнопку "Принять участие" Вы соглашаетесь с <a href="/privacy_policy.html" target="_blank"><font color="red">Политикой конфиденциальности</font></a></p>

<script>
document.getElementById('feedback-form').addEventListener('submit', function(evt){
  var http = new XMLHttpRequest(), f = this;
  evt.preventDefault();
  http.open("POST", "contacts.php", true);
  http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  http.send("nameFF=" + f.nameFF.value + "&contactFF=" + f.contactFF.value + "&messageFF=" + f.messageFF.value);
  http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
                alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей организации!');  
                        
      f.messageFF.removeAttribute('value'); // очистить поле сообщения (две строки)
      f.messageFF.value='';
    }
  }
  http.onerror = function() {
    alert('Извините, данные не были переданы');
  }
}, false);
</script>
            <!-- Contact Form Validation-->
            <script type="text/javascript">
              $("#contact_form").validate({
                submitHandler: function(form) {
                  var form_btn = $(form).find('button[type="submit"]');
                  var form_result_div = '#form-result';
                  $(form_result_div).remove();
                  form_btn.before('<div id="form-result" class="alert alert-success" role="alert" style="display: none;"></div>');
                  var form_btn_old_msg = form_btn.html();
                  form_btn.html(form_btn.prop('disabled', true).data("loading-text"));
                  $(form).ajaxSubmit({
                    dataType:  'json',
                    success: function(data) {
                      if( data.status == 'true' ) {
                        $(form).find('.form-control').val('');
                      }
                      form_btn.prop('disabled', false).html(form_btn_old_msg);
                      $(form_result_div).html(data.message).fadeIn('slow');
                      setTimeout(function(){ $(form_result_div).fadeOut('slow') }, 6000);
                    }
                  });
                }
              });
            </script>
          </div>
        </div>
    </section>  
         </div>
                        
                        

 

<?php

function smtpmail($mail_to, $subject, $message, $headers='') {

        //Настройки почты
        $config['smtp_username'] = '[email protected]';  //Смените на имя своего почтового ящика из ISPManager.
        $config['smtp_password'] = 'Jhmeg43600s029a';  //Измените пароль.
        $config['smtp_from']     = 'Ikkk'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого".
        //Обычно эти настройки менять не стоит
        $config['smtp_host']     = 'smtp.beget.com';  //Сервер для отправки почты (для наших клиентов менять не требуется).
        $config['smtp_port']     = '2525'; // Порт работы. Не меняйте, если не уверены.
        $config['smtp_debug']    = true;  //Если Вы хотите видеть сообщения ошибок, укажите true вместо false.
        $config['smtp_charset']  = 'UTF-8';   //Кодировка сообщений.

        $SEND =   "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
        $SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
        if ($headers) $SEND .= $headers."\r\n\r\n";
        else
        {
                $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
                $SEND .= "MIME-Version: 1.0\r\n";
                $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
                $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
                $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
                $SEND .= "To: $mail_to <$mail_to>\r\n";
                $SEND .= "X-Priority: 3\r\n\r\n";
        }
        $SEND .=  $message."\r\n";
         if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
            if ($config['smtp_debug']) echo $errno."<br>".$errstr;
            return false;
         }

            if (!server_parse($socket, "220", __LINE__)) return false;

            fputs($socket, "EHLO " . $config['smtp_host'] . "\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить EHLO!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "AUTH LOGIN\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизации!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
            if (!server_parse($socket, "235", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду MAIL FROM:</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");

            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду RCPT TO:</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "DATA\r\n");

            if (!server_parse($socket, "354", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить команду DATA!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, $SEND."\r\n.\r\n");

            if (!server_parse($socket, "250", __LINE__)) {
               if ($config['smtp_debug']) echo '<p>Не могу отправить тело письма. Письмо не было отправлено!</p>';
               fclose($socket);
               return false;
            }
            fputs($socket, "QUIT\r\n");
            fclose($socket);
            return TRUE;
}
function server_parse($socket, $response, $line = __LINE__) {
        global $config;
    while (substr($server_response, 3, 1) != ' ') {
        if (!($server_response = fgets($socket, 256))) {
                   if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
                   return false;
                }
    }
    if (!(substr($server_response, 0, 3) == $response)) {
           if ($config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response
$line
";
           return false;
        }
    return true;
}

//Отправить почту сразу нескольким получателям, ящики получателей пишем через запятую.

function smtpmassmail($mail_to, $subject, $message, $headers='')
{
$mailaddresses=explode(",",$mail_to);
foreach ($mailaddresses as $mailaddress) smtpmail($mailaddress,$subject,$message,$headers);
}

?>
Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Комментарии

    • Int
      alert('2' + submit.value) нужно было делать внутри request.onreadystatechange, потому что именно там приходит значение с сервера и задаётся value у submit. И через сколько времени это произойдёт, не всегда известно, может и через минуту, если интернет медленный, поэтому таймаутами универсально не побороть.
    • Int
      Я не уверен, что у формы есть событие input, но если даже было бы, то переменные result, num1 и num2 не определены. Они были бы созданы автоматически, если бы это были id, но у тебя-то name. И я не в курсе, сейчас можно писать js-код в атрибутах без javascript: спереди? И есть ли у тега <output> свойство value? Может быть, у него textContent? Подключи Vue, там будет работать так, как ты хочешь, только придётся несколько дополнительных действий сделать, привязывая переменные к инпутам и создавая computed-свойство.
    • Int
      В телеграме картинка есть, вконтакт тоже показывает, даже в аське есть. Видимо, ты как-то не так проверяешь.
    • Romario1985
      Понял, спасибо большое. Я просто думал, что если выбран класс, то и применяяется только к конкретному классу, а оказывается не правильно думал. Еще раз спасибо
    • smirn0ff
      Добрый день! Есть такая страница http://tehne.com/grant/right-bank-of-kazanka-river-competition-2021-ru Хочу сделать чтобы в мессенджерах когда отправляют ссылку вместе с заголовком показывалась определенная картинка. Я добавил эту картинку в мета тэги og и link rel="image_src"  и она все равно не появляется когда делюсь в мессенджерах Почему так?  
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.