|
@@ -17,6 +17,7 @@ type GmailAuth struct {
|
|
|
Pwd string //密码
|
|
|
PoolChan chan *gomail.Dialer
|
|
|
PoolSize int
|
|
|
+ ReTry int
|
|
|
}
|
|
|
|
|
|
var locker = &sync.Mutex{}
|
|
@@ -38,7 +39,7 @@ func getDialer(flag bool, auth *GmailAuth, to string) *gomail.Dialer {
|
|
|
}
|
|
|
}
|
|
|
if flag {
|
|
|
- log.Println(to, "发送邮件getDialer:get new gomail Dialer")
|
|
|
+ log.Println(auth.User, to, "发送邮件getDialer:get new gomail Dialer")
|
|
|
dialer := gomail.NewPlainDialer(auth.SmtpHost, auth.SmtpPort, auth.User, auth.Pwd) // 发送邮件服务器、端口、发件人账号、发件人密码
|
|
|
dialer.TLSConfig = &tls.Config{ServerName: auth.SmtpHost, InsecureSkipVerify: true}
|
|
|
auth.PoolChan <- dialer
|
|
@@ -65,7 +66,11 @@ func GSendMail(from, to, cc, bcc, subject, body, fname, rename string, auth *Gma
|
|
|
m.Attach(fname, gomail.Rename(rename), gomail.SetHeader(h)) //添加附件
|
|
|
//m.Attach(fname) //添加附件
|
|
|
}
|
|
|
- return gSend(3, auth, m, to)
|
|
|
+ reTry := auth.ReTry
|
|
|
+ if reTry == 0 {
|
|
|
+ reTry = 3
|
|
|
+ }
|
|
|
+ return gSend(reTry, auth, m, to)
|
|
|
}
|
|
|
|
|
|
//如果附件是byte,用这个
|
|
@@ -87,7 +92,11 @@ func GSendMail_B(from, to, cc, bcc, subject, body, fname string, fb []byte, auth
|
|
|
m.Attach_new(fb, gomail.Rename(fname), gomail.SetHeader(h)) //添加附件
|
|
|
//m.Attach(fname) //添加附件
|
|
|
}
|
|
|
- return gSend(1, auth, m, to)
|
|
|
+ reTry := auth.ReTry
|
|
|
+ if reTry == 0 {
|
|
|
+ reTry = 1
|
|
|
+ }
|
|
|
+ return gSend(reTry, auth, m, to)
|
|
|
}
|
|
|
|
|
|
//
|
|
@@ -99,7 +108,7 @@ func gSend(retry int, auth *GmailAuth, m *gomail.Message, to string) bool {
|
|
|
if err := dialer.DialAndSend(m); err != nil {
|
|
|
dialer = getDialer(true, auth, to)
|
|
|
if retry > 0 {
|
|
|
- log.Println(to, "第", i+1, "次发送邮件gSend error:", err)
|
|
|
+ log.Println(auth.User, to, "第", i+1, "次发送邮件gSend error:", err)
|
|
|
time.Sleep(200 * time.Millisecond)
|
|
|
}
|
|
|
} else {
|