もしかするとその後、送信済みのメールを削除したいと思うかもしれません。
その場合次のようなコードで対応できます。
注意1.Gmailの設定画面から言語を「English (US)」に設定しておく必要があります。
注意2.このコードを実行すると「Sent Mail(送信済み)」および「Trash(ゴミ箱)」フォルダの中身がすべて削除され、復元することはできません。
// pearのNet_IMAPを利用する
require_once('Net/IMAP.php');
require_once('Net/IMAPProtocol.php');
$imap = new Net_IMAP("ssl://imap.googlemail.com", 993);
// デバッグモードをOnにする
$imap->setDebug(true);
// ログインする
$imap->login("アカウント名@gmail.com", "パスワード");
// 「Sent Mail」フォルダを選択する
$imap->selectMailbox("[Gmail]/Sent Mail");
// 「Sent Mail」フォルダのメールを「Trash」フォルダに移動する
$imap->copyMessages("[Gmail]/Trash");
// 「Trash」フォルダを選択する
$imap->selectMailbox("[Gmail]/Trash");
// 「Trash」フォルダ内のすべてのメールに削除フラグを付ける
$imap->setFlags("all", "\Deleted", "add");
// ゴミ箱を空にする
$imap->expunge();
// IMAPサーバから切断する
$imap->disconnect();
はまったのは、「Sent Mail」フォルダ内で削除フラグをつけてもメールがゴミ箱に移動しないことでした。
Gmailサーバーは削除フラグをセットするコマンドを、当該メールをアーカイブするコマンドとみなすようです。
なので、まずメールを「Trash」フォルダに移動させ、そこで削除フラグを付け、最後にEXPUNGEコマンドを発行する必要があります。
こうすることでやっと、論理削除ではなく物理削除したことになるようです。
最後にNet_IMAPのAPIドキュメントのリンクを貼っておきます。
0 件のコメント:
コメントを投稿