我正在尝试使用以下代码将邮件从收件箱移到已处理标签中:
$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);
不幸的是,虽然邮件带有“已处理”标签,但它们仍留在收件箱中。
我怎样才能让他们离开收件箱?
最佳答案
实际上...电子邮件留在收件箱中的原因是当 imap_mail_move 执行此操作时,所有剩余邮件的 ID 都减一,因此当 foreach 循环移动到下一封邮件时,一封邮件被留下了。这会跳过每次迭代都会重复的消息。这就是 imap_mail_move 似乎不起作用的原因。
解决方案是使用唯一的消息 UID 而不是可能重复的 ID:
$inbox = imap_open( $host, $user, $pass );
$emails = imap_search( $inbox, 'ALL', SE_UID );
if( $emails ) {
foreach( $emails as $email_uid ) {
imap_mail_move($inbox, $email_uid, 'processed', CP_UID);
}
}
关于php - 如何将邮件从 Gmail 收件箱移动到标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8278017/