【问题标题】:imap_setflag_full is unable to set email as read gmailimap_setflag_full 无法将电子邮件设置为已读 gmail
【发布时间】:2018-05-31 17:11:03
【问题描述】:

我有一个脚本可以检查用户邮箱并将这些电子邮件处理到票务系统中。 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;
        }
    }
}

}

【问题讨论】:

    标签: php email imap imap-open


    【解决方案1】:

    您没有使用 UID,所以不要在 imap_setflag_full 上设置 ST_UID 标志。您到处都在使用消息序列号:

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

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多