@Dizzy221
PHP Программист

Как получить папку письма IMAP?

Собственно интересуют входящие сообщения, которые не попали ни в одну папку и лежат в корневой INBOX. Смотрел заголовки и тело письма, там нет ни одного упоминания о том в какой папке находится письмо.

Вижу пока только такой вариант:

  1. По отдельности получаем письма за N период из всех папок и записываем их в массив
  2. Читаем все входящие письма за N период и записываем их в массив
  3. Удаляем элементы из массива со всеми входящими? которые попали в первый массив


Но кажется мне что решение такое не шипко правильное и есть более адекватные способы. Кто сталкивался направьте плз.
  • Вопрос задан
  • 595 просмотров
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
Или я склерозник или модулем imap вы в принципе не можете что-то искать, не подключившись сначала в конкретный mailbox. То есть директорию вы знаете заведомо при подключении или можете imap_open с OP_HALFOPEN и так запросить imap_list, чтобы обходить руками список вызывая imap_reopen. Но на каждой итерации вы всё так же знаете текущий mailbox
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега PHP
Можно попробовать обойтись без массивов.
На примере gmail.
$imapPath = '{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX';
$username = 'login@gmail.com';
$password = 'password';
$inbox = imap_open($imapPath,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error());

// Тут главное действие, поиск в папке "Входящие"
$emails = imap_search($inbox,'TEXT "yii"'); // найти письма с текстом "yii"
// или
$emails = imap_search($inbox,'FROM "exsample@mail.com"'); // письма с определённым адресом

Вот полный список
ALL - return all messages matching the rest of the criteria
    ANSWERED - match messages with the \\ANSWERED flag set
    BCC "string" - match messages with "string" in the Bcc: field
    BEFORE "date" - match messages with Date: before "date"
    BODY "string" - match messages with "string" in the body of the message
    CC "string" - match messages with "string" in the Cc: field
    DELETED - match deleted messages
    FLAGGED - match messages with the \\FLAGGED (sometimes referred to as Important or Urgent) flag set
    FROM "string" - match messages with "string" in the From: field
    KEYWORD "string" - match messages with "string" as a keyword
    NEW - match new messages
    OLD - match old messages
    ON "date" - match messages with Date: matching "date"
    RECENT - match messages with the \\RECENT flag set
    SEEN - match messages that have been read (the \\SEEN flag is set)
    SINCE "date" - match messages with Date: after "date"
    SUBJECT "string" - match messages with "string" in the Subject:
    TEXT "string" - match messages with text "string"
    TO "string" - match messages with "string" in the To:
    UNANSWERED - match messages that have not been answered
    UNDELETED - match messages that are not deleted
    UNFLAGGED - match messages that are not flagged
    UNKEYWORD "string" - match messages that do not have the keyword "string"
    UNSEEN - match messages which have not been read yet


p.s.
Но есть одно "НО". Не знаю как с другими почтовиками, но в gmail необходимо разрешить доступ для непроверенных приложений и подтвердить свой выбор через письмо, которое присылается на Ваш ящик автоматически.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект