初版
定时任务管理
This commit is contained in:
67
mail/mail.go
Normal file
67
mail/mail.go
Normal file
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* @Author: haodaquan
|
||||
* @Date: 2017-06-21 13:06:28
|
||||
* @Last Modified by: haodaquan
|
||||
* @Last Modified time: 2017-06-21 13:06:33
|
||||
*/
|
||||
|
||||
package mail
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/astaxie/beego"
|
||||
"github.com/astaxie/beego/utils"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
sendCh chan *utils.Email
|
||||
config string
|
||||
)
|
||||
|
||||
func init() {
|
||||
queueSize, _ := beego.AppConfig.Int("mail.queue_size")
|
||||
host := beego.AppConfig.String("mail.host")
|
||||
port, _ := beego.AppConfig.Int("mail.port")
|
||||
username := beego.AppConfig.String("mail.user")
|
||||
password := beego.AppConfig.String("mail.password")
|
||||
from := beego.AppConfig.String("mail.from")
|
||||
if port == 0 {
|
||||
port = 25
|
||||
}
|
||||
|
||||
config = fmt.Sprintf(`{"username":"%s","password":"%s","host":"%s","port":%d,"from":"%s"}`, username, password, host, port, from)
|
||||
|
||||
sendCh = make(chan *utils.Email, queueSize)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case m, ok := <-sendCh:
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if err := m.Send(); err != nil {
|
||||
beego.Error("SendMail:", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func SendMail(address, name, subject, content string, cc []string) bool {
|
||||
mail := utils.NewEMail(config)
|
||||
mail.To = []string{address}
|
||||
mail.Subject = subject
|
||||
mail.HTML = content
|
||||
if len(cc) > 0 {
|
||||
mail.Cc = cc
|
||||
}
|
||||
|
||||
select {
|
||||
case sendCh <- mail:
|
||||
return true
|
||||
case <-time.After(time.Second * 3):
|
||||
return false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user