diff --git a/contact/email.go b/contact/email.go index e7fc9c4..b1ce6de 100755 --- a/contact/email.go +++ b/contact/email.go @@ -30,7 +30,6 @@ func (e *Emailer) ReadIMAP() (chan *mail.Message, error) { if err != nil { return nil, err } - defer c.Logout() if err := c.Login(e.From, e.Password); err != nil { return nil, err } @@ -42,23 +41,19 @@ func (e *Emailer) ReadIMAP() (chan *mail.Message, error) { to := mbox.Messages seqset := new(imap.SeqSet) seqset.AddRange(from, to) - messages := make(chan *imap.Message, 10) - go func(messages chan *imap.Message) { - log.Println("start fetching") + emails := make(chan *mail.Message) + messages := make(chan *imap.Message) + go func() { + defer c.Logout() section := &imap.BodySectionName{} if err := c.Fetch(seqset, []imap.FetchItem{imap.FetchEnvelope, section.FetchItem()}, messages); err != nil { - panic(err) + log.Println("error fetching:", err) } - log.Println("done fetching") - }(messages) - emails := make(chan *mail.Message) - go func(emails chan *mail.Message) { - log.Println("go read emails") + }() + go func() { defer close(emails) for msg := range messages { - log.Println("email", msg) for _, v := range msg.Body { - log.Println("body", v) m, err := mail.ReadMessage(v) if err != nil { log.Println(err) @@ -67,8 +62,7 @@ func (e *Emailer) ReadIMAP() (chan *mail.Message, error) { } } } - log.Println("done reading emails") - }(emails) + }() return emails, nil }