From 34fbd423edae4c31a740428ff88440374a23f41f Mon Sep 17 00:00:00 2001 From: wenfei Date: Fri, 27 Mar 2026 18:02:27 +0800 Subject: [PATCH] add send email --- body.html | 31 ++++++++++++++ controllers/SendEmailController.go | 60 +++++++++++++++++++++++++++ go.mod | 2 + go.sum | 4 ++ install_goget.sh | 2 + lastupdate.tmp | 2 +- routers/commentsRouter_controllers.go | 9 ++++ routers/router.go | 4 ++ 8 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 body.html create mode 100644 controllers/SendEmailController.go diff --git a/body.html b/body.html new file mode 100644 index 0000000..3f679f1 --- /dev/null +++ b/body.html @@ -0,0 +1,31 @@ +

+ 你好,{{.UserName}}
+

+

+         您的邮件已发送成功,祝您生活愉快!浏览网页,请点击 +

+ + + + + + + + + + + + + + +
+ 邮件发送方 + + 邮件接收方 +
+ {{.From}} + + {{.To}} +
+ {{.emailContent}} +
\ No newline at end of file diff --git a/controllers/SendEmailController.go b/controllers/SendEmailController.go new file mode 100644 index 0000000..a210a87 --- /dev/null +++ b/controllers/SendEmailController.go @@ -0,0 +1,60 @@ +package controllers + +import ( + "crypto/tls" + "github.com/astaxie/beego" + "github.com/astaxie/beego/logs" + "gopkg.in/gomail.v2" + "html/template" + "io" + "os" +) + +type SendEmailController struct { + beego.Controller +} + +// @Title SendEmail +// @Description 发送邮件a +// @router /email [get] +func (c *SendEmailController) Email() { + email := c.Ctx.Input.Query("email") + if email == "" { + //c.Ctx.WriteString("接收的邮件地址必填" ) + email = "hwf452@163.com" + } + subject := "MT4开单信号提示" + + m := gomail.NewMessage() + m.SetHeader("From", "273217031@qq.com") + //m.SetHeader("To", "273217031@qq.com") + m.SetHeader("To", email) + if subject == "" { + m.SetHeader("Subject", "Hello!") + } else { + m.SetHeader("Subject", subject) + } + emailContent := "黄金做多开单,触发5分钟周期开单信号" + + data := map[string]interface{}{"UserName": "273217031@qq.com", "From": "273217031@qq.com", "To": email, "emailContent": emailContent} + + t3, errHtml := template.ParseFiles("body.html") //将一个文件读作模板 + if errHtml != nil { + logs.Debug("errHtml") + } + t3.Execute(os.Stdout, data) + + m.AddAlternativeWriter("text/html", func(w io.Writer) error { + return t3.Execute(w, data) + }) + + d := gomail.NewDialer("smtp.qq.com", 465, "273217031@qq.com", "kvppflvecaekbiei") + d.TLSConfig = &tls.Config{ServerName: "smtp.qq.com", InsecureSkipVerify: true} + + if err := d.DialAndSend(m); err != nil { + logs.Debug(err) + } + + logs.Debug(email) + c.ServeJSON() +} diff --git a/go.mod b/go.mod index 06fbe26..8a0488e 100644 --- a/go.mod +++ b/go.mod @@ -56,6 +56,8 @@ require ( golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1 // indirect golang.org/x/text v0.26.0 // indirect google.golang.org/protobuf v1.23.0 // indirect + gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect + gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect gopkg.in/ini.v1 v1.51.0 // indirect gopkg.in/yaml.v2 v2.3.0 // indirect ) diff --git a/go.sum b/go.sum index b2a459a..5a0142b 100644 --- a/go.sum +++ b/go.sum @@ -444,12 +444,16 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk= +gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE= +gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= diff --git a/install_goget.sh b/install_goget.sh index dbb4c53..97004ec 100755 --- a/install_goget.sh +++ b/install_goget.sh @@ -11,6 +11,8 @@ go get github.com/astaxie/beego || echo github.com/astaxie/beego go get github.com/satori/go.uuid || echo github.com/satori/go.uuid go get github.com/beego/bee || echo github.com/beego/bee go get github.com/go-sql-driver/mysql || echo github.com/go-sql-driver/mysql +#发送电子邮件 +go get gopkg.in/gomail.v2 || echo gopkg.in/gomail.v2 go install github.com/beego/bee/v2@latest diff --git a/lastupdate.tmp b/lastupdate.tmp index 7f44f5a..6f7e299 100755 --- a/lastupdate.tmp +++ b/lastupdate.tmp @@ -1 +1 @@ -{"/Users/edao/go/src/goftp/controllers":1565924934000000000} \ No newline at end of file +{"/Users/admin/GolandProjects/goftp/controllers":1774605101250870961,"/Users/edao/go/src/goftp/controllers":1565924934000000000} \ No newline at end of file diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 654b968..53d90d2 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -79,4 +79,13 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["goftp/controllers:SendEmailController"] = append(beego.GlobalControllerRouter["goftp/controllers:SendEmailController"], + beego.ControllerComments{ + Method: "Email", + Router: "/email", + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + } diff --git a/routers/router.go b/routers/router.go index 0e7f136..f148254 100644 --- a/routers/router.go +++ b/routers/router.go @@ -20,6 +20,10 @@ func setNs() { beego.NSInclude( &v1.IpController{}, )), + beego.NSNamespace("/sendEmail", + beego.NSInclude( + &v1.SendEmailController{}, + )), ) beego.AddNamespace(ns) }