diff --git a/imap_handler.go b/imap_handler.go index b2797ef..4982fa1 100644 --- a/imap_handler.go +++ b/imap_handler.go @@ -10,6 +10,8 @@ import ( type MailBox struct { Server string + User string + Password string Client *imapclient.Client } @@ -22,11 +24,21 @@ func (mb *MailBox) Connect() error { WordDecoder: &mime.WordDecoder{CharsetReader: charset.Reader}, } var err error - mb.Client, err = imapclient.DialStartTLS(mb.Server, options) + mb.Client, err = imapclient.DialTLS(mb.Server, options) if err != nil { log.Println("Error connnecting to", mb.Server, ":", err) return err } + log.Println("Connected") + err = mb.Client.Login(mb.User, mb.Password).Wait() + if err != nil { + log.Fatal("failed to login:", err) + } + log.Println("Logged in") return nil } + +func (mb *MailBox) Close() { + mb.Client.Close() +} diff --git a/mailblog.go b/mailblog.go index e15fa63..f850b6d 100644 --- a/mailblog.go +++ b/mailblog.go @@ -3,6 +3,7 @@ package main import ( "log" "net/http" + "net/url" "os" ) @@ -13,8 +14,17 @@ func slash(w http.ResponseWriter, r *http.Request) { func main() { var mb MailBox - mb.Server = os.Getenv("IMAP_SERVER") - err := mb.Connect() + + + + url, err := url.Parse(os.Getenv("MAILBOX")) + if err != nil { + log.Fatal("Bad parameter MAILBOX:", os.Getenv("MAILBOX"), "(", err, ")") + } + mb.Server = url.Host + mb.User = os.Getenv("IMAP_USER") + mb.Password = os.Getenv("IMAP_PASSWORD") + err = mb.Connect() if err != nil { log.Fatal(err) } @@ -22,7 +32,11 @@ func main() { if err != nil { log.Fatal(err) } + log.Println(msg) + + mb.Close() + return http.HandleFunc("/", slash) http.ListenAndServe("0.0.0.0:8080", nil) }