为了账号安全,请及时绑定邮箱和手机立即绑定

如何在go中将消息标记为未读?

如何在go中将消息标记为未读?

Go
qq_笑_17 2021-09-09 13:46:35
我想通过 IMAP 将消息标记为未读。我不知道,什么参数给了“替换”函数。我正在使用http://godoc.org/github.com/mxk/go-imap/imap这是我的代码:set, _ := imap.NewSeqSet("")set.AddNum(45364) // 45364 is message's UID_, err = imap.Wait(c.UIDStore(set, "+FLAGS", imap.Replace()))
查看完整描述

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)

}


查看完整回答
反对 回复 2021-09-09
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

你可以用另一种方式来做。您可以删除标志。例子:


flags := `\Seen`

tmpSet, _ := imap.NewSeqSet("")

tmpSet.AddNum(emailUid)

_, err = imap.Wait(c.UIDStore(tmpSet, "-FLAGS", imap.NewFlagSet(flags)))


查看完整回答
反对 回复 2021-09-09
  • 2 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信