在Mac Mail中,您可以设置标志红色,橙色,黄色,绿色,蓝色,紫色,灰色。在iOS和大多数其他电子邮件客户端上,无论你选择哪个标志,它最终都是红色的。
然而,旗标颜色在其他mac电脑上保留了相同的电子邮件帐户,所以我认为它必须保存在imap服务器上。这可能被称为关键字/自定义标志,但我找不到任何关于它的文档。
这段代码返回一个对象,其中包含收件箱中最早的消息的IMAP数据:
$imap = imap_open("{".$server.":143}INBOX", "$email", "$password");
$header = imap_header($imap, 1);
echo "".nl2br(var_dump($header))."";
如果我用任何颜色标记消息,这部分都会改变,但无论我选择什么颜色,都总是"F"。
["Flagged"]=> string(1) "F"
通过使用imap_fetch_overview()我得到这个(0表示没有标志,1表示有标志)
["flagged"]=> int(1)
我发现这个:"这些是(由苹果)使用3imap实现的关键字作为比特(提供8种不同的状态,尽管只使用了7种)我相信)。"http://lists.freron.com/mailmate/2015-January/003578.html
但我找不到任何变化的数据,看起来像任何位相关的"标记"。在IMAP中Mac邮件存储这个,我如何用PHP读取它?
实际上你不能这样做使用标准的imap扩展,因为它是不可能获取自定义的标志使用它。您可以尝试一些第三方IMAP实现,或者使用套接字自己编写。
Zend_Mail_Protocol_Imap
是Zend_Framework的一部分,它有自己的IMAP实现,支持自定义命令。使用它,你可以简单地:
$imap = new Zend_Mail_Protocol_Imap($server, 143);
$imap->login($email, $password);
$imap->select('INBOX');
$flags = $imap->fetch('FLAGS', 1);
var_dump($flags);
你会得到这样的结果:
array(5) {
[0] => string(8) "'Flagged"
[1] => string(5) "'Seen"
[2] => string(8) "$NotJunk"
[3] => string(13) "$MailFlagBit0"
[4] = >string(13) "$MailFlagBit1"
}
你可以看到$MailFlagBit0和$MailFlagBit1是设置的,所以根据你发布的这个消息的链接有一个黄色的标志(这实际上不是真的-我选择了绿色)
我做了一些测试,这是如何确定国旗的颜色:
(
0b000
)红-$MailFlagBit0
、$MailFlagBit1
、$MailFlagBit3
均无集合(
0b001
)橙色-仅$MailFlagBit0
设置(
0b010
) yellow - only$MailFlagBit1
set(
0b011
) green -$MailFlagBit0
and$MailFlagBit1
set(
0b100
) blue - only$MailFlagBit2
set(
0b101
)紫-$MailFlagBit0
和$MailFlagBit2
集(
0b110
) gray -$MailFlagBit1
and$MailFlagBit2
set