Идеальная замена обычных уведомлений на почту — это telegram. Заявка сразу прилетает в месенджер, не нужно постоянно проверять почту. Кроме того, избавляемся от проблем исходящей почты на сервере.
Часто на хостинге отключена возможность рассылки почты. Также, из-за спама могут закрыть порты на сервере. Поэтому будем использовать уведомления в телеграм!
Для начала нам понадобится бот. Создаем его через botfather, сохраняем токен. Сложностей возникнуть не должно, инструкций много. Далее идем на сайт.
Возьмем для примера простую форму обратной связи:
<form action-xhr="#" method="POST"> Введите Ваше имя: <br><input type="text" placeholder="Ваше имя" name="call_user"><br><br> Контакт для обратной связи <br>(<i>это может быть эмейл или телеграм-аккаунт</i>): <br><input type="text" placeholder="*Email или телеграм" name="us_contact" required><br><br> Сообщение: <br><textarea name="mymes" cols="40" rows="10" placeholder="*Напишите здесь текст" required></textarea><br> <button class="btn-fill-primary" type="submit">Отправить</button> </form> * - обязательные поля.
Поля: имя (необязательно), контакт (обязательно, эмейл или телеграм) и сам текст сообщения (обязательный). Дальше нужен обработчик формы.
Выкладываю код обработчика с комментариями:
<?php $userId = '264121246'; // Id телеграм аккаунта, куда отправлять сообщения $token = '101543549:AAJDsandkWEuhsd434Sd23G8'; // Token бота, если что - он ненастоящий$user_name = ' ('.$_POST["call_user"].')'; // Скобки для красоты, мне так удобнее $user_contact = $_POST["us_contact"]; // Данные с поля "контакт пользователя" $user_text = $_POST["mymes"]; // Текст сообщения if (!empty($user_contact) and !empty($user_text)) { // Если поля "контакт" и "текст" не пусты. Дополнительная проверка при обработке формы (если будут боты слать запросы) $msg = '*Заявка с сайта bdseo.ru* '; // Делаем первую строку "жирной". Переводы строки для удобства в телеграме. $msg .= $user_contact.$user_name; // Добавляем в текст поле "контакт" и имя $msg .= ' пишет: '.$user_text; // Добавляем текст сообщения. Перевод строки опять же для удобства file_get_contents('https://api.telegram.org/bot'. $token .'/sendMessage?chat_id='. $userId .'&text=' . urlencode($msg) . '&parse_mode=markdown'); // Отправляем запрос. Разметка - markdown echo "<strong>Спасибо, мы получили Ваше сообщение.</strong><hr>"; // Выводим сообщение что заявка ушла } ?>
Самое главное тут file_get_contents, через него и делаем отсылку заявку на телеграм. Если нужны дополнительные данные (ошибка или вывод «ответа» от сервера телеграм), поместите file_get_contents в переменную и выводите ее или сохраняйте в логи.
Смотря где у Вас форма и где обработчик (куда уходят данные, action). У меня все на одной странице.
Способов много. Создайте еще один file_get_contents, или массив с id аккаунтов и используйте цикл (например, foreach).
В самом начале нужно со своего аккаунта написать боту. Можно нажать стандартный /start, чтобы аккаунт стал «доверенным» и бот мог слать ему сообщения. Дальше главное правильно прописать id. Как узнать свой телеграм ID — напишите боту @my_id_bot.
Если это не помогло, нужно смотреть ответ после запроса.
Уберите mail() с его данными и используйте file_get_contents. Адаптируйте поле с сообщением ($msg), добавьте туда все данные с формы.
Вот как это примерно выглядит в телеграме:
Форма простая, обработчик тоже; «почтовые» порты на хостинге или сервере не нужны. И заявки моментально прилетают в телеграм. Удобно.
Очень много разговоров в последнее время за токен NOT. Много бирж будут делать листинг токена,…
Телеграм недавно запустил возможность стейкать (замораживать) USDT и получать за это их валюту TON. Очень…
Биржа криптовалют Binance проводит сейчас промо-акцию: новым пользователям дают ваучеры в сумме 110 долларов. Деньги…
Самый главный момент в работе с youtube - это получить ключ api через консоль разработчика…
Арендую сервер для небольшого проекта на python. И вот приходит мне уведомление, что за сутки…
Тестирую одну схему, и нужно на много видео наложить watermark. Решил делать через Python 3,…
View Comments
підкажіть будь ласка, а як робите редірект на головну?
Загалом все працює, але після відправки повідомленна залишається сторінка /*.php
Добрий день,
будь-яким зручним способом (яваскрипт або рнр), наприклад:
header(“Location: http://site.ru/”);
exit();
Якщо вам не потрібна аякс-відповідь, то після file_get_contents вставляємо код і все.