第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何獲取 IMAP 消息的可見/不可見狀態(tài)

如何獲取 IMAP 消息的可見/不可見狀態(tài)

Go
慕妹3146593 2021-11-15 15:15:52
我已經(jīng)閱讀了 go文檔以及一般的 imap文檔,但似乎無法找到獲取特定消息狀態(tài)的正確方法 - 知道它是被標(biāo)記為已讀還是未讀。這是我到目前為止所得到的:// //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" (T) <nil>我引用的文檔讓我相信,如果消息被標(biāo)記為看不見,至少我的一種方法應(yīng)該打印。我錯(cuò)過了什么?編輯:我正在測試帶有四封郵件的收件箱(gmail)。前兩個(gè)已讀,后兩個(gè)未讀。這是所有四個(gè)消息的輸出。FETCH<nil>SIHLB7 STATUS "INBOX" (?) <nil>FETCH<nil>SIHLB8 STATUS "INBOX" (ü) <nil>FETCH<nil>SIHLB9 STATUS "INBOX" (Y) <nil>FETCH<nil>SIHLB10 STATUS "INBOX" (T) <nil>
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

需要注意的幾件事,請確保您實(shí)際上是在 imap 請求中請求 flags 字段。如果你發(fā)出取,那么你就必須在傳遞"FLAGS"作為參數(shù)Fetch,另外,在標(biāo)志屬性Attrs是大小寫敏感的,所以你需要rsp.MessageInfo().Attrs["FLAGS"]。下面是一個(gè)在 Gmail 中使用 imap 和 go-imap 庫的工作示例,運(yùn)行它GMAIL_EMAIL=email.address GMAIL_PASSWD=mypassword go run go_file.go


package main


import (

    "code.google.com/p/go-imap/go1/imap"

    "crypto/rand"

    "crypto/tls"

    "fmt"

    "os"

    "time"

)


func main() {

    label := "INBOX"

    email := os.Getenv("GMAIL_EMAIL")

    passwd := os.Getenv("GMAIL_PASSWD")


    conf := &tls.Config{

        Rand: rand.Reader,

    }


    c, err := imap.DialTLS("imap.gmail.com:993", conf)

    if err != nil {

        panic("Failed to connect")

    }


    defer c.Logout(30 * time.Second)


    c.Data = nil


    if c.Caps["STARTTLS"] {

        c.StartTLS(nil)

    }


    // Authenticate

    if c.State() == imap.Login {

        c.Login(email, passwd)

    }


    if c.State() != imap.Auth {

        panic("Authentication error")

    }


    c.Select(label, true)


    set, _ := imap.NewSeqSet("*")


    cmd, err := c.Fetch(set, "FLAGS", "UID")

    if err != nil {

        panic("Bad fetch command")

    }

    _, err = cmd.Result(imap.OK)

    if err != nil {

        panic("Bad fetch response")

    }

    for _, rsp := range cmd.Data {

        seen := false

        for _, flag := range imap.AsList(rsp.MessageInfo().Attrs["FLAGS"]) {

            if flag == "\\Seen" {

                seen = true

            }

        }


        if seen {

            fmt.Printf("Message %d has been read!\n", imap.AsNumber(rsp.MessageInfo().Attrs["UID"]))

        } else {

            fmt.Printf("Message %d has been not been read!\n", imap.AsNumber(rsp.MessageInfo().Attrs["UID"]))

        }

    }

}



查看完整回答
反對 回復(fù) 2021-11-15
?
千巷貓影

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

每條消息在 IMAP 中都有一個(gè)標(biāo)志列表,其中一個(gè)稱為\seen(不區(qū)分大小寫,IMAP 中的大多數(shù)內(nèi)容也是如此)。如果標(biāo)志列表不包含該標(biāo)志,則消息不可見。

@jstedfast 的回答解釋了如何獲取標(biāo)志列表。剩下的就是在空白處拆分并檢查列表中的任何單詞是否等于\seen。


查看完整回答
反對 回復(fù) 2021-11-15
?
慕姐8265434

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊

fmt.Println(rsp.MessageInfo().Attrs["Flags"])

<nil>因?yàn)闆]有設(shè)置標(biāo)志,所以為你打印,這意味著消息是“看不見的”。


查看完整回答
反對 回復(fù) 2021-11-15
  • 3 回答
  • 0 關(guān)注
  • 228 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號