package imapclient_test import ( "strings" "testing" "github.com/emersion/go-imap/v2" ) func TestFetch(t *testing.T) { client, server := newClientServerPair(t, imap.ConnStateSelected) defer client.Close() defer server.Close() seqSet := imap.SeqSetNum(1) bodySection := &imap.FetchItemBodySection{} fetchOptions := &imap.FetchOptions{ BodySection: []*imap.FetchItemBodySection{bodySection}, } messages, err := client.Fetch(seqSet, fetchOptions).Collect() if err != nil { t.Fatalf("failed to fetch first message: %v", err) } else if len(messages) != 1 { t.Fatalf("len(messages) = %v, want 1", len(messages)) } msg := messages[0] if len(msg.BodySection) != 1 { t.Fatalf("len(msg.BodySection) = %v, want 1", len(msg.BodySection)) } b := msg.FindBodySection(bodySection) if b == nil { t.Fatalf("FindBodySection() = nil") } body := strings.ReplaceAll(string(b), "\r\n", "\n") if body != simpleRawMessage { t.Errorf("body mismatch: got \n%v\n but want \n%v", body, simpleRawMessage) } }