]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Получение почты
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 14 Mar 2025 08:04:24 +0000 (11:04 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 14 Mar 2025 08:04:24 +0000 (11:04 +0300)
erp24/media/controllers/FlowwowController.php

index b8211a658edcdc5fdfc23891f6fc72afd7c588e0..1e56cca90a40f9485c4f3c079501d2b7ed559ccb 100644 (file)
@@ -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];
+    }
+
+}
+