【问题标题】:How to mark a message as read , \Seen on IMAP ( Go )如何将邮件标记为已读,\在 IMAP (Go) 上看到
【发布时间】:2014-09-14 23:22:01
【问题描述】:

我正在尝试使用 IMAP 将消息/消息列表标记为“\SEEN”(永久)。然而,与 fetch、search 和friends 不同的是,imap 包上似乎没有 Flag 功能。我应该使用 UID 发送原始命令吗?

【问题讨论】:

    标签: go imap


    【解决方案1】:

    你必须选择邮箱为可写的

    youImapConnection.Select(mailboxName, false) // true would be for readonly
    

    然后只需执行以下操作

    seq, _ := imap.NewSeqSet("")
    err := seq.AddNum(612) // 612 is your UID
    _, err = imap.Wait(youImapConnection.UIDStore(seq, "+FLAGS", imap.NewFlagSet(`\Seen`))) // Here you tell to add the flag \Seen
    

    最后你必须删除:

    _, err := imap.Wait(youImapConnection.Close(true)) // Here you tell to apply changes, necessary if you mark an Email as deleted
    

    你应该很好:-)

    不要犹豫,浏览文档/源代码,它很容易理解,你会找到你需要的。

    【讨论】:

    • 这似乎有效。知道如何将其设置为未读吗?我尝试按照 RFC 发送“null”,但它不起作用。作为旁注,我想知道为什么 GO 团队不只是添加一些带有所有可能标志和属性的枚举/常量
    • Nvm 我找到了...应该是 ``-FLAGS`。 imap 规格是一团糟。
    • Imap 协议确实一团糟,但是您应该在源代码中或通过阅读不同的相关 RFC 找到您需要的所有信息。祝你好运:-)
    【解决方案2】:

    IMAP 使用STORE 命令在消息上设置标志,例如:

    foo UID STORE 135211 +FLAGS (\Seen)
    

    所以我猜你应该使用StoreUIDStore 函数来设置标志。

    【讨论】:

    • 甚至似乎有一个FlagSet 类型可以同时保存多个标志。
    猜你喜欢
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多