emersion / go-imap

📥 An IMAP library for clients and servers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GetBody() error:ENVELOPE doesn't contain 10 fields

SinDeng opened this issue · comments

error info:
2023/09/18 16:18:33 ENVELOPE doesn't contain 10 fields
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x58 pc=0x166fa50]

goroutine 143 [running]:
github.com/emersion/go-imap.(*Message).GetBody(0xc000253dd8?, 0x1?)
/Users/aa/go/pkg/mod/github.com/emersion/go-imap@v1.2.1/message.go:341 +0x110

code:
seqset := new(imap.SeqSet)
seqset.AddNum(uid)
sect := &imap.BodySectionName{Peek: true}
items := []imap.FetchItem{imap.FetchEnvelope, imap.FetchFlags, imap.FetchInternalDate, sect.FetchItem()}
messages := make(chan *imap.Message,1)
messageDone := make(chan error, 1)

	go func() {
		messageDone <- c.UidFetch(seqset, items, messages)
	}()

	msg := <- messages

	if err := <-messageDone; err != nil {
		log.Println(err)
	}
	fmt.Println(msg.GetBody(sect))

change FetchItem normal.

items := []imap.FetchItem{imap.FetchBody, sect.FetchItem()}