花了很长时间试图让它工作,然后最终想起来我以只读方式打开了邮箱 - 显然你需要写入权限才能设置标志!(PHP 4, PHP 5, PHP 7, PHP 8)
imap_setflag_full — 设置邮件标志
导致存储将指定的 flag 添加到为指定 sequence 中的邮件设置的标志。
imap一个 IMAP\Connection 实例。
sequence邮件编号序列。您可以使用 X,Y 语法枚举所需的邮件,或者使用 X:Y 语法检索某个区间内的所有邮件
flag可以设置的标志有 \Seen、\Answered、\Flagged、\Deleted 和 \Draft,如 » RFC2060 中所定义。
options一个位掩码,可能包含以下单个选项
ST_UID - sequence 参数包含 UID 而不是序列号
始终返回 true。
如果 options 无效,则抛出 ValueError。
| 版本 | 描述 |
|---|---|
| 8.1.0 | imap 参数现在期望一个 IMAP\Connection 实例;以前,期望一个有效的 imap 资源。 |
| 8.0.0 | 现在在无效的 options 参数值上抛出 ValueError。以前,会发出警告并且函数返回 false。 |
示例 #1 imap_setflag_full() 示例
<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password")
or die("无法连接: " . imap_last_error());
$status = imap_setflag_full($mbox, "2,5", "\\Seen \\Flagged");
echo gettype($status) . "\n";
echo $status . "\n";
imap_close($mbox);
?>在可能的情况下,我会避免使用 POP3 帐户。我的主机允许我升级到 IMAP,它更容易得多。我认为使用 POP3 创建任何形式的邮件客户端的唯一准确方法是将邮件下载到 SQL 数据库中,这是一个很大的任务,考虑到 IMAP 标准内置了我们需要的功能。
我尝试在 POP3 中设置标志,但它们似乎根本没有保留,并且几乎不可能检索未读邮件的数量(即 Seen/Unseen 无法正常工作)
转换为 IMAP 并且它可以工作 - 本节中的大多数函数似乎都专注于 IMAP 并且通常不会与 POP3 一起使用