diff options
author | 2019-12-02 17:58:19 +0100 | |
---|---|---|
committer | 2019-12-02 17:58:19 +0100 | |
commit | e9d31b0940793542021b5218e406d6e0c668c185 (patch) | |
tree | 083559d6ccdf219649274137f0c4dc5fc5c53bc4 /imap.go | |
parent | 594bb2ec190edc2d5c6d1b3898b3bc0ac10e2098 (diff) | |
download | alps-e9d31b0940793542021b5218e406d6e0c668c185.tar.gz alps-e9d31b0940793542021b5218e406d6e0c668c185.tar.bz2 alps-e9d31b0940793542021b5218e406d6e0c668c185.zip |
Extract IMAP functions into separate file
Diffstat (limited to 'imap.go')
-rw-r--r-- | imap.go | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -0,0 +1,49 @@ +package koushin + +import ( + "github.com/emersion/go-imap" + imapclient "github.com/emersion/go-imap/client" +) + +func (s *Server) connectIMAP() (*imapclient.Client, error) { + var c *imapclient.Client + var err error + if s.imap.tls { + c, err = imapclient.DialTLS(s.imap.host, nil) + if err != nil { + return nil, err + } + } else { + c, err = imapclient.Dial(s.imap.host) + if err != nil { + return nil, err + } + if !s.imap.insecure { + if err := c.StartTLS(nil); err != nil { + c.Close() + return nil, err + } + } + } + + return c, err +} + +func listMailboxes(conn *imapclient.Client) ([]*imap.MailboxInfo, error) { + ch := make(chan *imap.MailboxInfo, 10) + done := make(chan error, 1) + go func () { + done <- conn.List("", "*", ch) + }() + + var mailboxes []*imap.MailboxInfo + for mbox := range ch { + mailboxes = append(mailboxes, mbox) + } + + if err := <-done; err != nil { + return nil, err + } + + return mailboxes, nil +} |