在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)
我发现这个:“这些都是使用3 IMAP实现的(Apple) 关键字作为位(提供8种不同的状态,尽管只使用了7种) 我相信)。” http://lists.freron.com/mailmate/2015-January/003578.html
但我找不到任何与“FLAGGED”相关的数据变化的内容。 IMAP中的哪个位置存储了Mac Mail,如何用PHP读取它?
答案 0 :(得分:2)
实际上你无法使用标准的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,所以根据link you posted这条消息有一个黄色标记(实际上这不是真的 - 我选择了绿色)。
我做了一些测试,这就是旗帜颜色的确定方式:
(0b000
)红色 - $MailFlagBit0
,$MailFlagBit1
和$MailFlagBit3
没有设置
(0b001
)橙色 - 仅$MailFlagBit0
设置
(0b010
)黄色 - 仅$MailFlagBit1
设置
(0b011
)绿色 - $MailFlagBit0
和$MailFlagBit1
设置
(0b100
)蓝色 - 仅$MailFlagBit2
设置
(0b101
)紫色 - $MailFlagBit0
和$MailFlagBit2
设置
(0b110
)灰色 - $MailFlagBit1
和$MailFlagBit2
设置