0

ユーザーのメールボックスをチェックし、それらのメールをチケット システムに処理するスクリプトがあります。99% の場合、スクリプトは正常に動作します。ときどき、処理後に既読としてマークされない電子メールに出くわします。imap_setflag_fullフラグを使用して既読としてマークしていません。自動的にマークします。これまでのところ、これは Gmail で発生しています。

imap_setflag_full($hMail, $idxMsg, "\\Seen \\Flagged", ST_UID);

そのため、メールを使用しようimap_setflag_fullとしても、既読としてマークされません。手動でできることは、受信トレイに移動してメールを削除することだけです。

なぜこれが起こっているのか誰にも分かりますか?

$hMail = imap_open("{".$row['address'].":".$row['port']."/".$row['transport']."/".$row['security']."}INBOX", "$strUser", "$strPassword");

if ($hMail) {
    // get headers
    $aHeaders = imap_headers($hMail);

    // get message count
    $objMail = imap_mailboxmsginfo( $hMail );

    // process messages
    for( $idxMsg = 1; $idxMsg <= $objMail->Nmsgs; $idxMsg++  ) {
        // get header info
        $objHeader = imap_headerinfo( $hMail, $idxMsg );

        // is unread mail
        if($objHeader->Unseen == 'U') {
            // email unread so process
            imap_setflag_full($hMail, $idxMsg, "\\Seen \\Flagged", ST_UID);
        } else {
            // email read already so skip
            if ($row['delete_email'] == 1) {
                // delete message
                imap_delete( $hMail, $idxMsg );
            }
            continue;
        }
    }
}

}

4

1 に答える 1