PHP - ошибка в команде IMAP STORE: неверный набор сообщений - PullRequest
0 голосов
/ 04 июня 2018

Я использую imap с php и обнаружил эту ошибку:

Неизвестно: ошибка протокола IMAP: ошибка в команде IMAP STORE: неверный набор сообщений (0,001 + 0,000 с).(errflg = 2)

Это происходит только с некоторыми почтовыми ящиками (например, один размещен на misterdomain.eu).

Ошибка возникает в конце сценария после imap_close () .

Это простой код.Если у вас есть предложение (далеко от моей первой проблемы), оно действительно принимается.

<code>$inbox = imap_open($hostname,$username,$password) or die('Cannot connect: ' . imap_last_error());
$emails = imap_search($inbox,'SINCE "'.date("d-M-y",strtotime("-3 days")).'"',SE_UID);

if($emails) {
    rsort($emails);
    foreach($emails as $email_number) {

        echo "<h1>".$email_number."</h1>";
        $overview = imap_fetch_overview($inbox,$email_number, FT_UID);

        if($overview[0]->seen)
            imap_clearflag_full($inbox,$email_number,"//Seen");
        else
            imap_clearflag_full($inbox,$email_number,"//Unseen");

        $structure = imap_fetchstructure($inbox,$email_number, FT_UID);

        if(isset($structure->parts)){
            $flattenedParts = flattenParts($structure->parts);
            echo "<pre>";
            print_r($flattenedParts);
            echo "
"; echo""; getmsg ($ inbox, $ email_number); echo"

". Htmlspecialchars_decode (utf8_decode ($ plainmsg)). "

";} else {$ string_email = utf8_decode (imap_body ($ inbox, $ email_number, FT_UID)); $ string_email = strip_tags ($ string_email); $ string_email = html_entity_decode, $ stringENT_QUOTES); echo "

". $ String_email. "

";}}} imap_close ($ inbox);

1 Ответ

0 голосов
/ 04 июня 2018

Вы ищете и выбираете, используя UID, но сохраняете, используя порядковые номера сообщений.Эти способы нумерации сообщений не совпадают, поэтому вы отправляете неверные номера сообщений для хранения.Добавьте соответствующий флаг ST_UID к imap_clearflag_full.

Кроме того, системные флаги используют обратную косую черту , а не прямую косую черту: '\\Seen'.\Unseen не определенный флаг.Вы, вероятно, хотите вместо добавить флаг \Seen.

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