diff options
Diffstat (limited to 'imap.go')
-rw-r--r-- | imap.go | 29 |
1 files changed, 21 insertions, 8 deletions
@@ -2,29 +2,42 @@ package alps import ( "fmt" + "io" + "mime" + "net" + "os" - "github.com/emersion/go-imap" - imapclient "github.com/emersion/go-imap/client" + "github.com/emersion/go-imap/v2/imapclient" "github.com/emersion/go-message/charset" ) -func init() { - imap.CharsetReader = charset.Reader -} - func (s *Server) dialIMAP() (*imapclient.Client, error) { + // TODO: don't print passwords to debug logs + var debugWriter io.Writer + if s.Options.Debug { + debugWriter = os.Stderr + } + + options := &imapclient.Options{ + DebugWriter: debugWriter, + WordDecoder: &mime.WordDecoder{ + CharsetReader: charset.Reader, + }, + } + var c *imapclient.Client var err error if s.imap.tls { - c, err = imapclient.DialTLS(s.imap.host, nil) + c, err = imapclient.DialTLS(s.imap.host, options) if err != nil { return nil, fmt.Errorf("failed to connect to IMAPS server: %v", err) } } else { - c, err = imapclient.Dial(s.imap.host) + conn, err := net.Dial("tcp", s.imap.host) if err != nil { return nil, fmt.Errorf("failed to connect to IMAP server: %v", err) } + c = imapclient.New(conn, options) if !s.imap.insecure { if err := c.StartTLS(nil); err != nil { c.Close() |