From: fomichev Date: Fri, 14 Mar 2025 08:04:24 +0000 (+0300) Subject: Получение почты X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=529c9c2ec1a686022b95f4f3bfc83c0954785bec;p=erp24_rep%2Fyii-erp24%2F.git Получение почты --- 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]; + } + +} +