IMAP_SEARCH с несколькими ключевыми словами тела - PullRequest
0 голосов
/ 30 апреля 2018

Я искал в Интернете и не нашел другой вопрос точно так же, как этот. Я хочу найти почтовый ящик, чтобы найти все электронные письма, содержащие ключевые слова X. Количество ключевых слов является динамическим, и оно не нуждается во всех из них. Например, я хочу найти входящие по ключевым словам: PHP и JAVA. Это означает, что мой идеальный результат заключается в том, что он возвращает электронные письма, по крайней мере, с одним из двух ключевых слов. Сейчас я могу искать тело, но могу передать только 1 параметр. Когда я добавляю другую, мне кажется, что требуется и то и другое.

Вот код:

$queryString = 'BODY "php" BODY "java"';


private function connectSmtp()
{
    $this->connection = imap_open(
        '{'.$this->credentials['smtp'].'/'.$this->credentials['encryption'].'}/'.$this->credentials['mailbox'],
        $this->credentials['user'],
        $this->credentials['password']
    );
}

private function readMailbox($queryString)
{
    $in = [];
    $totalMessages = \imap_num_msg($this->connection);//Used for something else

    $sorted = imap_search($this->connection, $queryString);

    for($i = 0; $i <= (count($sorted ) - 1); $i++) {
        $in[] = array(
            'index'     => $i,
            'header'    => \imap_headerinfo($this->connection, $sorted[$i]),
            'body'      => \imap_body($this->connection, $sorted[$i]),
            'structure' => \imap_fetchstructure($this->connection, $sorted[$i]),
            'mailnumber' => $sorted[$i]
        );
    }
    return $in;
}

Однако это возвращает 220 писем, но когда я ищу только PHP, я получаю 35000 (это правильно), а когда я ищу только JAVA, я получаю 3000.

Как я могу это исправить, чтобы получать все электронные письма, которые содержат по крайней мере 1 ключевое слово и не требуют, чтобы все ключевые слова были в письме?

Я также пытался использовать: $queryString = 'OR BODY "php" BODY "java" '; Это возвращает мне ложь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...