1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
--- a/plugins/base/imap.go 2022-05-08 10:19:23.329157653 +0200
+++ b/plugins/base/imap.go 2022-05-08 10:23:38.878395784 +0200
@@ -530,14 +530,23 @@
}
ch := make(chan *imap.Message, 1)
- if err := conn.UidFetch(seqSet, fetch, ch); err != nil {
- return nil, nil, fmt.Errorf("failed to fetch message: %v", err)
- }
+ done := make(chan error, 1)
+ go func() {
+ done <- conn.UidFetch(seqSet, fetch, ch)
+ }()
+ // There may be multiple FETCH data responses.
+ // Keep the first message and discard the rest.
msg := <-ch
if msg == nil {
return nil, nil, fmt.Errorf("server didn't return message")
}
+ for range ch {
+ }
+
+ if err := <-done; err != nil {
+ return nil, nil, fmt.Errorf("failed to fetch message: %v", err)
+ }
body := msg.GetBody(&partHeaderSection)
if body == nil {
|