forked from flipped-aurora/gin-vue-admin
/
email.go
82 lines (70 loc) · 2.05 KB
/
email.go
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package utils
import (
"crypto/tls"
"fmt"
"net/smtp"
"strings"
"github.com/eyotang/game-proxy/server/global"
"github.com/jordan-wright/email"
)
//@author: [maplepie](https://github.com/maplepie)
//@function: Email
//@description: Email发送方法
//@param: subject string, body string
//@return: error
func Email(subject string, body string) error {
to := strings.Split(global.GVA_CONFIG.Email.To, ",")
return send(to, subject, body)
}
//@author: [SliverHorn](https://github.com/SliverHorn)
//@function: ErrorToEmail
//@description: 给email中间件错误发送邮件到指定邮箱
//@param: subject string, body string
//@return: error
func ErrorToEmail(subject string, body string) error {
to := strings.Split(global.GVA_CONFIG.Email.To, ",")
if to[len(to)-1] == "" { // 判断切片的最后一个元素是否为空,为空则移除
to = to[:len(to)-1]
}
return send(to, subject, body)
}
//@author: [maplepie](https://github.com/maplepie)
//@function: EmailTest
//@description: Email测试方法
//@param: subject string, body string
//@return: error
func EmailTest(subject string, body string) error {
to := []string{global.GVA_CONFIG.Email.From}
return send(to, subject, body)
}
//@author: [maplepie](https://github.com/maplepie)
//@function: send
//@description: Email发送方法
//@param: subject string, body string
//@return: error
func send(to []string, subject string, body string) error {
from := global.GVA_CONFIG.Email.From
nickname := global.GVA_CONFIG.Email.Nickname
secret := global.GVA_CONFIG.Email.Secret
host := global.GVA_CONFIG.Email.Host
port := global.GVA_CONFIG.Email.Port
isSSL := global.GVA_CONFIG.Email.IsSSL
auth := smtp.PlainAuth("", from, secret, host)
e := email.NewEmail()
if nickname != "" {
e.From = fmt.Sprintf("%s <%s>", nickname, from)
} else {
e.From = from
}
e.To = to
e.Subject = subject
e.HTML = []byte(body)
var err error
hostAddr := fmt.Sprintf("%s:%d", host, port)
if isSSL {
err = e.SendWithTLS(hostAddr, auth, &tls.Config{ServerName: host})
} else {
err = e.Send(hostAddr, auth)
}
return err
}