mirror of
https://github.com/emersion/go-imap
synced 2026-07-03 09:38:29 +00:00
50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
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)
|
|
}
|
|
}
|