package imapclient_test import ( "log" "github.com/emersion/go-imap/v2" "github.com/emersion/go-imap/v2/imapclient" ) func ExampleClient() { c, err := imapclient.DialTLS("mail.example.org:993", nil) if err != nil { log.Fatalf("failed to dial IMAP server: %v", err) } defer c.Close() if err := c.Login("root", "asdf").Wait(); err != nil { log.Fatalf("failed to login: %v", err) } mailboxes, err := c.List("", "%", nil).Collect() if err != nil { log.Fatalf("failed to list mailboxes: %v", err) } log.Printf("Found %v mailboxes", len(mailboxes)) for _, mbox := range mailboxes { log.Printf(" - %v", mbox.Mailbox) } selectedMbox, err := c.Select("INBOX").Wait() if err != nil { log.Fatalf("failed to select INBOX: %v", err) } log.Printf("INBOX contains %v messages", selectedMbox.NumMessages) if selectedMbox.NumMessages > 0 { seqSet := imap.SeqSetNum(1) fetchItems := []imap.FetchItem{imap.FetchItemEnvelope} messages, err := c.Fetch(seqSet, fetchItems).Collect() if err != nil { log.Fatalf("failed to fetch first message in INBOX: %v", err) } log.Printf("subject of first message in INBOX: %v", messages[0].Envelope.Subject) } if err := c.Logout().Wait(); err != nil { log.Fatalf("failed to logout: %v", err) } }