花了很长时间试图让它工作,然后最终想起来我以只读方式打开了邮箱 - 显然你需要写入权限才能设置标志!
(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 一起使用