[英]PHP - MySQL - Delete all rows except most recent 3 & This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
[英]I can't seem to delete all messages except the most recent
我正在使用以下代码(您可能会从php.net识别)删除我的收件箱中的所有电子邮件:
function deleteEmails($emailAddress)
{
// connect to gmail with your credentials
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = $emailAddress; # e.g somebody@gmail.com
$password = '****************';
// try to connect
$inbox = imap_open($hostname,$username,$password) or die('Cannot download information: ' . imap_last_error());
$check = imap_mailboxmsginfo($inbox);
echo "Messages before delete: " . $check->Nmsgs . "<br />\n";
imap_delete($inbox, '1:*');
$check = imap_mailboxmsginfo($inbox);
echo "Messages after delete: " . $check->Nmsgs . "<br />\n";
imap_expunge($inbox);
$check = imap_mailboxmsginfo($inbox);
echo "Messages after expunge: " . $check->Nmsgs . "<br />\n";
imap_close($inbox);
}
如果我让帐户失控,有时会发生这种情况,这有助于解决帐户中的阻塞问题。 但是,我真正需要的是删除除最近一封电子邮件以外的所有电子邮件。 我试图更改imap_delete($inbox, '1:*');
到imap_delete($inbox, '2:*');
但这导致它根本无法工作。
我想念什么?
编辑下面的建议,我尝试了以下操作:
imap_delete($inbox, "2:$check->Nmsgs");
但是有趣的是,它删除了除“对话”以外的所有内容,但在gmail“对话”中最多可以删除61封电子邮件! 我不确定该如何解决。 另外,几分钟后,已删除的返回...
我知道gmail可以做一些有趣的事情,只是对它们进行不同的标记,然后将其放入“所有邮件”文件夹中,因为没有像大多数IMAP系统那样真正的“文件夹”。 您是否尝试过给它一个范围,例如
imap_delete($inbox,2:$check->Nmsgs);
如果这不起作用,则可能只需要循环将它们标记为删除,然后删除即可。
我发现了问题。 默认情况下,Gmail是使用“会话”设置的,这意味着进入同一主题的所有电子邮件都将归为一组。 这可以固定所有内容,但可以在gmail设置中将其关闭。 完成后,我需要确保删除所有(除了最近的)。 使用imap_delete($inbox,2:$check->Nmsgs);
删除所有,但最旧的。 所以以下代码为我做到了:
$emails = ($check->Nmsgs)-1;
imap_delete($inbox, '1:' . $emails);
这样我就得到了数字,但删除了所有最新的数字(最新的)
完成
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.