受信トレイ内のすべてのメールを削除するために、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");
しかし、興味深いことに、「会話」の 1 つを除いてすべて削除されましたが、Gmail では「会話」は 61 通のメールで最大になる可能性があります。これを回避する方法がわかりません。また、削除されたものは数分後に戻ってきました...