aboutsummaryrefslogtreecommitdiffstats
path: root/imap.go
diff options
context:
space:
mode:
Diffstat (limited to 'imap.go')
-rw-r--r--imap.go29
1 files changed, 21 insertions, 8 deletions
diff --git a/imap.go b/imap.go
index 7554331..e70a394 100644
--- a/imap.go
+++ b/imap.go
@@ -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()