From 529c9c2ec1a686022b95f4f3bfc83c0954785bec Mon Sep 17 00:00:00 2001 From: fomichev Date: Fri, 14 Mar 2025 11:04:24 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8?= =?utf8?q?=D0=B5=20=D0=BF=D0=BE=D1=87=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/media/controllers/FlowwowController.php | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/erp24/media/controllers/FlowwowController.php b/erp24/media/controllers/FlowwowController.php index b8211a65..1e56cca9 100644 --- a/erp24/media/controllers/FlowwowController.php +++ b/erp24/media/controllers/FlowwowController.php @@ -24,7 +24,6 @@ class FlowwowController extends Controller $xmlFeed = MarketplaceService::createXMLFeed($productsInfo); - // Устанавливаем заголовок, чтобы отдать XML Yii::$app->response->format = Response::FORMAT_RAW; Yii::$app->response->headers->add('Content-Type', 'application/xml; charset=utf-8'); @@ -39,4 +38,56 @@ class FlowwowController extends Controller } -} \ No newline at end of file + + /** + * Команда для проверки почтового ящика и обработки новых сообщений. + */ + public function actionCheckMail() + { + set_time_limit(300); + Yii::$app->response->format = Response::FORMAT_JSON; + $hostname = '{imap.yandex.ru:993/imap/ssl}INBOX'; + $username = 'Zakaz-bazacvetov24@yandex.ru'; + $password = 'jyxnwwwvgpwhzbdu'; + + // Устанавливаем таймауты IMAP + imap_timeout(IMAP_OPENTIMEOUT, 120); + imap_timeout(IMAP_READTIMEOUT, 120); + imap_timeout(IMAP_WRITETIMEOUT, 120); + imap_timeout(IMAP_CLOSETIMEOUT, 120); + + $inbox = imap_open($hostname, $username, $password); + if (!$inbox) { + Yii::error('Ошибка подключения: ' . imap_last_error(), __METHOD__); + return ['success' => false]; + } + //$inboxInfo = imap_mailboxmsginfo($inbox); + //Yii::warning(' Состояние ящика: ' . print_r($inboxInfo, true), __METHOD__); + $emails = imap_search($inbox, 'SINCE "01-Feb-2025" FROM "info@flowwow.com" '); + $count = $emails ? count($emails) : 0; + if ($emails) { + foreach ($emails as $email_number) { + $overview = imap_fetch_overview($inbox, $email_number, 0); + $structure = imap_fetchstructure($inbox, $email_number); + $htmlMessage = ''; + $subject = mb_decode_mimeheader($overview[0]->subject); + Yii::warning('Тема: ' . $subject, __METHOD__); + if ($subject == 'Новый_оплаченный_заказ') { + $message = quoted_printable_decode(imap_fetchbody($inbox, $email_number, 1.1)); + + Yii::warning('Тема: ' . print_r($overview[0]->subject, true), __METHOD__); + Yii::warning('Cообщение: ' . print_r($message, true), __METHOD__); + + } + + // imap_setflag_full($inbox, $email_number, "\\Seen"); + } + } else { + Yii::warning('Новых сообщений не обнаружено.', __METHOD__); + } + imap_close($inbox); + return ['success' => true, 'count' => $count]; + } + +} + -- 2.39.5