fix channels

master
bel 2020-04-02 23:55:08 +00:00
parent 5ca6aec6e9
commit 2c8bb32bb9
1 changed files with 8 additions and 14 deletions

View File

@ -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
}