加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何将邮件从Gmail收件箱移动到标签?

发布时间:2020-12-13 14:09:31 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用以下代码将邮件从收件箱移到已处理的标签中: $inbox = imap_open($host,$user,$pass) or die('Error: ' . imap_last_error());if( $emails = imap_search($inbox,'ALL') ){ foreach($emails as $email_number) { imap_mail_move($inbox,$emai
我正在尝试使用以下代码将邮件从收件箱移到已处理的标签中:
$inbox = imap_open($host,$user,$pass) or die('Error: ' . imap_last_error());

if( $emails = imap_search($inbox,'ALL') )
{
    foreach($emails as $email_number) {
        imap_mail_move($inbox,$email_number,'Processed') or die('Error');
    }

}
imap_expunge($inbox);
imap_close($inbox);

不幸的是,当消息获得Processed标签时,它们仍然留在Inbox中.

我怎么能让他们离开收件箱?

实际上…电子邮件留在收件箱中的原因是,当imap_mail_move做了它的事情时,所有剩余邮件的ID减1,所以当foreach循环移动到下一条消息时,留下一条消息.这跳过每次迭代重复的消息.这就是为什么似乎imap_mail_move无效.

解决方案是使用唯一的消息UID而不是可能重复的ID:

$inbox  = imap_open( $host,$pass );
$emails = imap_search( $inbox,'ALL',SE_UID );

if( $emails ) {
    foreach( $emails as $email_uid ) {
        imap_mail_move($inbox,$email_uid,'processed',CP_UID);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读