$xmlFeed = MarketplaceService::createXMLFeed($productsInfo);
- // Устанавливаем заголовок, чтобы отдать XML
Yii::$app->response->format = Response::FORMAT_RAW;
Yii::$app->response->headers->add('Content-Type', 'application/xml; charset=utf-8');
}
-}
\ 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];
+ }
+
+}
+