Задать вопрос
@maratakbutin

Одновременно не отправляет данные с сайта в телеграм и в почту?

Здравствуйте.

Я не разбираюсь в php. Нашёл готовые варианты отправки данных с сайта в телеграм и в почту. Отдельно они работают, но вместе — нет. В чём ошибка?

Исходники:

HTML
<form id="form-contact" method="POST" class="form-element" autocomplete="off" action="send-message-to-telegram.php">
<p class="form-message"></p>
<div class="great">
<span class="compulsory">*</span>
<input name="name" type="text" class="form-input__name" tabindex="1" placeholder="Ваше имя" required maxlength="52">
</div>
<div class="great">
<span class="compulsory">*</span>
<input name="phone" type="tel" class="form-input__phone" tabindex="2" placeholder="Ваш телефон" required maxlength="32">
</div>
<input name="tg" type="tel" class="form-input__tg" tabindex="3" placeholder="Ваш телеграм" maxlength="32">

<input name="theme" type="hidden" class="form-input__theme"  value="Заявка с сайта">
<input type="submit" class="form-input__button" value="Отправить">
</form>


PHP
// Отправка в Телеграм

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  if (!empty($_POST['name']) && !empty($_POST['phone'])){
    $name = strip_tags($_POST['name']);
    $nameFieldset = "Имя: ";
    $phone = strip_tags($_POST['phone']);
    $phoneFieldset = "Телефон: ";

    if (!empty($_POST['tg'])){
      $tg = strip_tags($_POST['tg']);
      $tgFieldset = "Телеграм: ";
    }

    $token = "token";
    $chat_id = "chatID";
    $arr = array(
      $nameFieldset => $name,
      $phoneFieldset => $phone,
      $tgFieldset => $tg
    );
    foreach($arr as $key => $value) {
      $txt .= "<b>".$key."</b> ".$value."%0A";
    };
    $sendToTelegram = fopen("https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chat_id}&parse_mode=html&text={$txt}","r");

    if ($sendToTelegram) {
      echo '<div class="success">&#8194;Заявка отправлена!</div>';
      return true;
    } else {
      echo '<div class="fail">Ошибка. Сообщение не отправлено!</div>';
    }

  } else {
    echo '<p class="fail before_send">Ошибка. Вы не заполнили все обязательные поля!</p>';
  }
} else {
  header ("Location: /");
}
?>

//Отправка в Почту

<?php
$to = "test@mail.ru"; // емайл получателя данных из формы
$tema = "Форма обратной связи на PHP"; // тема полученного емайла
$message = "Ваше имя: ".$_POST['name']."<br>";//присвоить переменной значение, полученное из формы name=name
$message .= "Номер телефона: ".$_POST['phone']."<br>"; //полученное из формы name=phone
$message .= "Номер телефона: ".$_POST['tg']."<br>"; 
$headers  = 'MIME-Version: 1.0' . "\r\n"; // заголовок соответствует формату плюс символ перевода строки
  $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; // указывает на тип посылаемого контента
mail($to, $tema, $message, $headers); //отправляет получателю на емайл значения переменных
?>


JS
$(document).ready(function () {
  $(".form-element").on('submit', function () {
    var formID = $(this).attr('id');
    var formNm = $('#' + formID);
    var message = $(formNm).find(".form-message");
    var formTitle = $(formNm).find(".form-title");
    $.ajax({
      type: "POST",
      url: './send-message-to-telegram.php',
      data: formNm.serialize(),
      beforeSend: function(){
        message.html('<div class="before_send"><img src="./SimilarPlumpBarasingha-size_restricted.gif" alt=""> <br>Идёт отправка сообщения...</div>');
      },
      success: function (data) {
        // Вывод сообщения об успешной отправке
        window.location.href = "true.html";
      },
      error: function (jqXHR, text, error) {
          // Вывод сообщения об ошибке отправки
          window.location.href = "false.html";
      },
    });
    return false;
  });
});
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
scottparker
@scottparker
убери return true; при успешной отправке в телегу. ну или поменяй местами отправку в телегу и на почту
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы