// getNextUID will grab the next message UID from the inbox. Client.Mailbox.UIDNext is cached so we can't use it. func getNextUID(conn *imap.Client) (uint32, error) { cmd, err := imap.Wait(conn.Status("INBOX", "UIDNEXT")) if err != nil { return 0, err } if len(cmd.Data) == 0 { return 0, errors.New("no data returned!") } var status *imap.MailboxStatus for _, resp := range cmd.Data { switch resp.Type { case imap.Data: status = resp.MailboxStatus() if status != nil { break } } } return status.UIDNext, nil }