我已经阅读了 go文档以及一般的 imap文档,但似乎无法找到获取特定消息状态的正确方法 - 知道它是被标记为已读还是未读。
这是我到目前为止所得到的:
//
//Code that set up 'c' and 'cmd' ...
//
for cmd.InProgress() {
// Wait for the next response (no timeout)
c.Recv(-1)
// Process command data
for _, rsp = range cmd.Data {
if err != nil {
fmt.Println(err)
}
header := imap.AsBytes(rsp.MessageInfo().Attrs["RFC822.HEADER"]) // Contains subject, from data
uid := imap.AsNumber(rsp.MessageInfo().Attrs["UID"]) // Message unique id
body := imap.AsBytes(rsp.MessageInfo().Attrs["RFC822.TEXT"]) // Message body
//seenState := imap.AsBytes(rsp.MessageInfo().Attrs["Flags"])
if msg, err := mail.ReadMessage(bytes.NewReader(header)); msg != nil {
if err != nil {
fmt.Println(err)
}
//START CUSTOM
if strings.Contains(msg.Header.Get("Subject"), genUUID()){
fmt.Println(rsp.Label)
fmt.Println(rsp.MessageInfo().Attrs["Flags"])
fmt.Println(c.Status("INBOX", string(uid)))
}
//END CUSTOM
对于输出,我得到:
FETCH
<nil>
LAOYU10 STATUS "INBOX" (Þ) <nil>
我引用的文档让我相信,如果消息被标记为看不见,至少我的一种方法应该打印。我错过了什么?
编辑:我正在测试带有四封邮件的收件箱(gmail)。前两个已读,后两个未读。这是所有四个消息的输出。
FETCH
<nil>
SIHLB7 STATUS "INBOX" (Û) <nil>
FETCH
<nil>
SIHLB8 STATUS "INBOX" (Ü) <nil>
FETCH
<nil>
SIHLB9 STATUS "INBOX" (Ý) <nil>
FETCH
<nil>
SIHLB10 STATUS "INBOX" (Þ) <nil>
白猪掌柜的
千巷猫影
慕姐8265434
相关分类