1+ package utils
2+
3+ import (
4+ "fmt"
5+ "strings"
6+ "net/smtp"
7+ "crypto/tls"
8+
9+ "gin-vue-admin/global"
10+
11+ "github.com/jordan-wright/email"
12+ )
13+
14+ func Email (subject string , body string ) error {
15+ to := strings .Split (global .GVA_CONFIG .Email .EmailTo , "," )
16+ return send (to , subject , body )
17+ }
18+
19+ func EmailTest (subject string , body string ) error {
20+ to := []string {global .GVA_CONFIG .Email .EmailFrom }
21+ return send (to , subject , body )
22+ }
23+
24+ func send (to []string , subject string , body string ) error {
25+ from := global .GVA_CONFIG .Email .EmailFrom
26+ nickName := global .GVA_CONFIG .Email .EmailNickName
27+ secret := global .GVA_CONFIG .Email .EmailSecret
28+ host := global .GVA_CONFIG .Email .EmailHost
29+ port := global .GVA_CONFIG .Email .EmailPort
30+ isSSL := global .GVA_CONFIG .Email .EmailIsSSL
31+
32+ auth := smtp .PlainAuth ("" , from , secret , host )
33+ e := email .NewEmail ()
34+ if nickName == "" {
35+ e .From = fmt .Sprintf ("%s <%s>" , nickName , from )
36+ }else {
37+ e .From = from
38+ }
39+ e .To = to
40+ e .Subject = subject
41+ e .HTML = []byte (body )
42+ var err error
43+ hostAddr := fmt .Sprintf ("%s:%d" , host , port )
44+ if isSSL {
45+ err = e .SendWithTLS (hostAddr , auth , & tls.Config {ServerName : host })
46+ }else {
47+ err = e .Send (hostAddr , auth )
48+ }
49+ return err
50+ }
0 commit comments