2 回答
TA贡献1804条经验 获得超7个赞
看看RFC3501和Replace的文档,它看起来有点乱。调查 Replace 的来源,它只需要一个 [] 字符串,其中包含来自 RFC3501 的关键字。所以,例如
flags := []string{}
// ....
_, err = imap.Wait(c.UIDStore(set, "+FLAGS", imap.Replace(flags)))
// Since the "\Seen" is not in splice, the message will be unseen
请注意,替换确实删除了所有标志。您必须处理(作为字符串值添加到拼接中)要保留的内容:
\看过
\回答
\标记
\已删除
\草案
\最近的
您可以从 MessageInfo struct / Flags 获取以前的值:
type MessageInfo struct {
Attrs FieldMap // All returned attributes
Seq uint32 // Message sequence number
UID uint32 // Unique identifier (optional in non-UID FETCH)
Flags FlagSet // Flags that are set for this message (optional)
InternalDate time.Time // Internal to the server message timestamp (optional)
Size uint32 // Message size in bytes (optional)
}
TA贡献1900条经验 获得超5个赞
你可以用另一种方式来做。您可以删除标志。例子:
flags := `\Seen`
tmpSet, _ := imap.NewSeqSet("")
tmpSet.AddNum(emailUid)
_, err = imap.Wait(c.UIDStore(tmpSet, "-FLAGS", imap.NewFlagSet(flags)))
- 2 回答
- 0 关注
- 226 浏览
添加回答
举报