2014-06-28 29 views
1

有一个奇怪的行为,我注意到PHP imap_mail_move函数。假设收件箱文件夹中有两封邮件,我想将它移动到另一个文件夹中,我遇到了一些麻烦(至少在Gmail中)。imap_mail_move复制电子邮件

如果我使用的IMAP/ARCHIVE (两者)

imap_mail_move($imap_connection, 1, 'ARCHIVE'); 
imap_mail_move($imap_connection, 2, 'ARCHIVE'); 

消息1标签从 到IMAP/ARCHIVE

消息2标签变化变化而不仅仅是IMAP/ARCHIVE

我不确定为什么会发生。为什么第二次没有如预期的那样工作。

注意:如果使用此代码,它可以正常工作。

imap_mail_move($imap_connection, 2, 'ARCHIVE'); 
imap_mail_move($imap_connection, 1, 'ARCHIVE'); 

imap_mail_move($imap_connection, 1, 'ARCHIVE'); 
$imap_connection = imap_open($mailbox, $connection_details['username'], $connection_details['password']); 
imap_mail_move($imap_connection, 2, 'ARCHIVE'); 

回答

1

能不能请你在移动,而不是消息数函数使用 “UID”?对我来说这项工作如预期。

$connection = imap_open($mailConnectionLine, $mailUser, $mailPassword); 
// get emails 
$emailsInbox = imap_search($connection, 'ALL', SE_UID); 
foreach ($emailsInbox as $emailUID) { 
    // Move 
    $movingResult = imap_mail_move($connection, $emailUID, $destinationFolder, CP_UID); 
} 
imap_close($connection, CL_EXPUNGE); 
+0

谢谢,它也适用于我。 –

+0

@VarunAgw请访问答案,如果它可以帮助你 –