Как получить get запрос от яндекс почты, если мне на яндекс почту пришло письмо?

maximpachin.ru
На сайте с 05.03.2024
Offline
6
460

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

Хочу регистрировать и обрабатывать  входящие письма на своем сайте.

В связи с этим вопрос: Как получить get запрос от яндекс почты, если мне на яндекс почту пришло письмо?

Нет такого у яндекса? у кого тогда есть?

https://maximpachin.ru - сайт программиста | консультирую бесплатно
Mik Foxi
На сайте с 02.03.2011
Offline
1217
#1
в почтах такое не принято, вы своим почтовым клиентом должны чекать почту на наличие новых писем.
Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (8 лет на защите сайтов). Форум на замену серчу: https://foxi.biz/
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#2
GET запрос вы не сделаете, а вот подключиться к POP3 через скрипт и проверить почту, почему бы и нет. 
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
maximpachin.ru
На сайте с 05.03.2024
Offline
6
#3
LEOnidUKG #:
GET запрос вы не сделаете, а вот подключиться к POP3 через скрипт и проверить почту, почему бы и нет. 

Это то я понимаю.

Но лучше бы вебхук, как в телеграм.

N3
На сайте с 04.07.2016
Offline
103
#4
maximpachin.ru #:

Это то я понимаю.

Но лучше бы вебхук, как в телеграм.

<?php
define('TELEGRAM_CHATID', '1111111111');
define('TELEGRAM_TOKEN', '1111111111:AAAAAAAAAAAAAAAAAAAAA_AAAAA');

$username = "mail@ya.ru";
$password = "password";
$folder = "INBOX";
$connect_imap = @imap_open("{imap.yandex.ru:993/imap/ssl}" . $folder , $username, $password) or die(message_to_telegram("Error: " . imap_last_error()));
forward_mail_to_telegram($connect_imap, 'timeweb');
forward_mail_to_telegram($connect_imap, 'selectel');

function forward_mail_to_telegram($connect_imap, $sender)
{
        $mails = imap_search($connect_imap, 'SINCE "'.date('d-M-Y', time()-24*3600).'" FROM "'.$sender.'" UNSEEN');
        if ($mails) {
                foreach($mails as $single_mail){
                        $header = imap_header($connect_imap, $single_mail);
                        $data = [$header->udate, $header->sender[0]->personal, header_decode($header->subject)];
                        message_to_telegram(sprintf("%s новое сообщение: <b>%s</b>\nВремя: <b>%s</b>", $data[1], $data[2], date('Y-m-d H:i:s', $data[0]+0*3600)));
                        imap_setflag_full($connect_imap, $single_mail, "\\Seen");
                }
        }
}

function message_to_telegram($text, $parse_mode='html')
{
        $ch = curl_init();
        curl_setopt_array(
                $ch,
                [
                        CURLOPT_URL => 'https://api.telegram.org/bot'.TELEGRAM_TOKEN.'/sendMessage',
                        CURLOPT_POST => TRUE,
                        CURLOPT_RETURNTRANSFER => TRUE,
                        CURLOPT_TIMEOUT => 10,
                        CURLOPT_POSTFIELDS => [
                                'parse_mode' => $parse_mode,
                                'chat_id' => TELEGRAM_CHATID,
                                'text' => $text,
                        ],
                ]
        );
        curl_exec($ch);
}

function header_decode($text)
{
        $result = [];
        $elements = imap_mime_header_decode(imap_utf8($text));
        for ($i=0; $i<count($elements); $i++) {
                $result[] = $elements[$i]->text;
        }
        return implode(' ', $result);
}

Вот код, проверяю есть ли письма от timeweb или selectel и кидаю уведомление себе в телегу, по крону никаких хуков нет в япочте.

J
На сайте с 10.10.2017
Offline
64
#5
nash300 #:

Вот код, проверяю есть ли письма от timeweb или selectel и кидаю уведомление себе в телегу, по крону никаких хуков нет в япочте.

Примерно такой же код использую для нескольких проектов)

Единственно, что у телеграма есть ограничение на размер отправляемого сообщения, надо большие разбивать на несколько )

Ну и обработку ошибок не забыть)

Забавно, что и функция похожа, мне правда нужна для отправки инлайн клавиатуры еще

function sendMessage($tg_chat_id, $message, $keyboard = "") {
        global $tg_token;
        $response = array(
                'chat_id' => $tg_chat_id,
                'text' => $message,
                'parse_mode' => "HTML"          
        );
        
        if ($keyboard){
                $arr = array('reply_markup' => json_encode($keyboard, TRUE));
                $response = array_merge($response, $arr);
        }      
        
        $ch = curl_init('https://api.telegram.org/bot' . $tg_token . '/sendMessage');  
        curl_setopt($ch, CURLOPT_POST, 1);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $response);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_exec($ch);
        curl_close($ch);
}

Программы на заказ https://upread.ru/
N3
На сайте с 04.07.2016
Offline
103
#6
JJizn #:

Примерно такой же код использую для нескольких проектов)

Единственно, что у телеграма есть ограничение на размер отправляемого сообщения, надо большие разбивать на несколько )

Ну и обработку ошибок не забыть)

Забавно, что и функция похожа, мне правда нужна для отправки инлайн клавиатуры еще


Я не отправляю текст письма, только тему, у яндекс почты тема обрезается до 400 с чем то символов и в лимиты телеги укладывается с большим запасом, а ошибка единственная которая была за долгое время работы  скрипта это подключение к серверу почты и она обрабатывается. А вообще это просто пример который можно взять за основу и добавить что нужно.

E
На сайте с 01.10.2017
Offline
126
#7
Mik Foxi #:
в почтах такое не принято
В некоторых принято: Уведомления о письмах по HTTP


maximpachin.ru :
В связи с этим вопрос: Как получить get запрос от яндекс почты, если мне на яндекс почту пришло письмо?

См. выше. Яндекс такого не умеет, но зато поддерживает пересылку почтовых уведомлений (коротких писем о приходе писем). Есть и другие SMTP-to-HTTP-шлюзы, но они обычно платные. Можно и на своем почтовом сервере разместить подобный шлюз.

"Обратные вызовы" обычно выполняются методом POST, не GET 😉

Домены на продажу: https://p20.ru/collection/domains-for-sale

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий