lotus/imap/imap.go

38 lines
755 B
Go

package imap
import (
"fmt"
"github.com/emersion/go-imap/client"
"github.com/emersion/go-sasl"
)
type Imap struct {
Server string `yaml:"server"`
Username string `yaml:"username"`
Password string `yaml:"password"`
Separator string `yaml:"separator"`
}
var defaultDialer = client.Dial
func (i *Imap) MakeClient(user string) (*Client, error) {
// dial imap server
imapClient, err := defaultDialer(i.Server)
if err != nil {
return nil, err
}
// prepare login details
un := fmt.Sprintf("%s%s%s", user, i.Separator, i.Username)
saslLogin := sasl.NewPlainClient("", un, i.Password)
// authenticate
err = imapClient.Authenticate(saslLogin)
if err != nil {
return nil, err
}
// new client
return &Client{ic: imapClient}, nil
}