PHP Conference Japan 2024

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() 或使用可选参数 CL_EXPUNGE 调用 imap_close()

参数

imap

一个 IMAP\Connection 实例。

message_nums

一个 string,表示一个或多个以 IMAP4 样式序列格式 ("n""n:m" 或这些格式用逗号分隔的组合) 表示的邮件。

flags

您可以设置 FT_UID,它告诉函数将 message_nums 参数视为 UID

返回值

始终返回 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(
"Can't connect: " . imap_last_error());

$check = imap_mailboxmsginfo($mbox);
echo
"删除前的邮件数: " . $check->Nmsgs . "<br />\n";

imap_delete($mbox, 1);

$check = imap_mailboxmsginfo($mbox);
echo
"删除后的邮件数: " . $check->Nmsgs . "<br />\n";

imap_expunge($mbox);

$check = imap_mailboxmsginfo($mbox);
echo
"清空后邮件数: " . $check->Nmsgs . "<br />\n";

imap_close($mbox);
?>

备注

注意:

IMAP 邮箱可能不会在连接之间保存其邮件标志,因此应在同一连接期间调用 imap_expunge() 以确保标记为删除的邮件确实会被清除。

参见

添加注释

用户贡献的注释 1 个注释

erational
11 年前
该函数使用邮件编号(而不是 uid!)
$uid = $mail->uid;
$msgno = $mail->msgno;

如果要使用 uid,只需使用选项值
imap_delete($mbox, $uid, FT_UID);
To Top