@@ -9,28 +9,38 @@ import (
9
9
10
10
func SendBulkEmail (emailAccounts []* EmailAccount , sendBulkEmailReq * SendBulkEmailRequest , emailPool * emailLib.Pool ) (failedIds []string ) {
11
11
failedIdsChan := make (chan string )
12
+ var total int
12
13
wg := new (sync.WaitGroup )
13
- for _ , email := range emailAccounts {
14
+ for i , email := range emailAccounts {
14
15
if sendBulkEmailReq .SecureOnly && ! email .HasPubKey () {
15
16
failedIds = append (failedIds , email .Id )
16
17
continue
17
18
}
18
19
20
+ total ++
19
21
wg .Add (1 )
20
- go func (email * EmailAccount ) {
21
- defer wg .Done ()
22
+ go func (i int , email * EmailAccount ) {
23
+ var maybeFailedId string
24
+ log .Debugf ("Sending bulk email #%v" , i + 1 )
22
25
err := email .Send (sendBulkEmailReq .EmailData , emailPool )
23
26
if err != nil {
24
- log .Errorf ("Error sending email: %v" , err )
25
- failedIdsChan <- email .Id
27
+ log .Errorf ("Error sending (instance of bulk) email: %v" , err )
28
+ maybeFailedId = email .Id
26
29
}
27
- }(email )
30
+ wg .Done ()
31
+ failedIdsChan <- maybeFailedId
32
+ }(i , email )
28
33
}
29
34
35
+ log .Debugf ("SendBulkEmailRequest: waiting for %v email(s) to send" , total )
30
36
wg .Wait ()
31
- close (failedIdsChan )
32
- for failedId := range failedIdsChan {
33
- failedIds = append (failedIds , failedId )
37
+
38
+ var failedId string
39
+ for i := 0 ; i < total ; i ++ {
40
+ failedId = <- failedIdsChan
41
+ if failedId != "" {
42
+ failedIds = append (failedIds , failedId )
43
+ }
34
44
}
35
45
36
46
return failedIds
0 commit comments