如何使用 PHP IMAP 将邮件移动到文件夹中

4
我似乎无法将我的邮件消息移动到保存的文件夹中。这是我的代码:
$mbox = imap_open("{".$mail_server.":".$mail_port."}".$mail_folder,            
$mail_username, $mail_password) or die("Error opening mailbox: ".imap_last_error());

$countnum = imap_num_msg($mbox);
$msglist = array();

if( $countnum > 0 ) {
$num = 1;


while ($num <= $countnum) {

$msglist[] = $num;
$num++;

     }//end while loop

}

//move the email to our saved folder
imap_mail_move($mbox,implode(',',$msglist),'INBOX/Saved');
imap_expunge($mbox);
imap_close($mbox);

当我运行这个脚本时,什么都没有发生。消息仍然在收件箱中。有什么想法吗?谢谢!
1个回答

8
从查看imap-mail-move()文档中,我发现你已经用,将范围粘合在一起,并且从1开始计数,所以不需要for循环:
<?php 
$mbox = imap_open("{".$mail_server.":".$mail_port."}INBOX", $mail_username, $mail_password) or die("Error opening mailbox: ".imap_last_error());

$countnum = imap_num_msg($mbox);

if($countnum > 0) {
    //move the email to our saved folder
    $imapresult=imap_mail_move($mbox,'1:'.$countnum,'INBOX/Saved');
    if($imapresult==false){die(imap_last_error());}
    imap_close($mbox,CL_EXPUNGE);
}
?>

检查编辑 if($imapresult==false){die(imap_last_error());} 需要一些错误来处理。 - Lawrence Cherone
它说邮箱名称无效,我不确定应该是什么,在松鼠邮件中我刚刚创建了一个名为“已保存”的文件夹。 - Rupert
啊哈,我把它改成了INBOX。保存后就可以工作了。感谢你的帮助! - Rupert
我不确定,如果可以的话可以尝试实验一下,但是请不要使用INBOX或者INBOX.Saved函数。很抱歉我不能提供太多帮助,因为我对这些函数的了解也只是通过阅读来尝试回答问题。 - Lawrence Cherone
2
INBOX/Saved更改为INBOX.Saved,并在比较布尔变量时使用3个===。只是为了保持答案100%正确,让其他人使用。我会非常感激 ^.^ - 131
@ahmadalbayati,INBOX.Saved并不能说明是否正确,因为它取决于该特定邮箱中使用的分隔符,因此最终一切都取决于邮件服务器的配置,尽管大多数邮件服务器使用“.”作为邮箱文件夹的分隔符。 - Big Zak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接