PHPのお勉強!

PHP TOP

imap_delete

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_delete現在のメールボックスから削除するメッセージに印を付ける

説明

imap_delete(IMAP\Connection $imap, string $message_nums, int $flags = 0): true

message_nums が指すメッセージに 削除予定のマークをします。削除マークを付けられたメッセージは、 imap_expunge() がコールされるか imap_close()CL_EXPUNGE を付けてコールされるかのどちらかが行われるまでメールボックスに残ったままになります。

パラメータ

imap

IMAP\Connection クラスのインスタンス。

message_nums

IMAP4 形式のシーケンスフォーマット ("n", "n:m", またはそれらをカンマで区切ったもの) で表現された、ひとつ以上のメッセージを表す文字列。

flags

FT_UID を指定すると、 引数 message_numsUID として処理することを関数に指示できます。

戻り値

常に true を返します。

エラー / 例外

flags が無効な場合、 ValueError がスローされます。

変更履歴

バージョン 説明
8.1.0 引数 imap は、IMAP\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、有効な imap リソース が期待されていました。
8.0.0 flags が無効な場合、 ValueError がスローされるようになりました。 これより前のバージョンでは、 警告が発生し、false を返していました。

例1 imap_delete() の例

<?php

$mbox
= imap_open("{imap.example.org}INBOX", "username", "password")
or die(
"接続できません: " . imap_last_error());

$check = imap_mailboxmsginfo($mbox);
echo
"Messages before delete: " . $check->Nmsgs . "<br />\n";

imap_delete($mbox, 1);

$check = imap_mailboxmsginfo($mbox);
echo
"Messages after delete: " . $check->Nmsgs . "<br />\n";

imap_expunge($mbox);

$check = imap_mailboxmsginfo($mbox);
echo
"Messages after expunge: " . $check->Nmsgs . "<br />\n";

imap_close($mbox);
?>

注意

注意:

IMAP メールボックスは、コネクション間で保存可能なメッセージフラグを持っていません。 そのため、削除マークをつけたメッセージが本当に削除されたことを保証するためには、 同一の接続内で imap_expunge() をコールする必要があります。

参考

  • imap_undelete() - 削除マークがついているメッセージのマークをはずす
  • imap_expunge() - 削除用にマークされたすべてのメッセージを削除する
  • imap_close() - IMAP ストリームをクローズする

add a note

User Contributed Notes 1 note

up
7
erational
11 years ago
the function is using the message number (and not the uid !)
$uid = $mail->uid;
$msgno = $mail->msgno;

if you want to use the uid, simply option value
imap_delete($mbox, $uid, FT_UID);