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