From 1ad43c45bdeda0356a43bfbd3e1855a8fe7350f7 Mon Sep 17 00:00:00 2001 From: taoshihan1991 <630892807@qq.com> Date: Tue, 26 May 2020 19:57:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Esmtp=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 ++ go.sum | 4 ++++ server.go | 14 +++++++++++--- tools/smtp.go | 22 ++++++++++++++++++++++ tools/types.go | 4 +++- 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 tools/smtp.go diff --git a/go.mod b/go.mod index 5d1c8db..3ac4b14 100644 --- a/go.mod +++ b/go.mod @@ -7,6 +7,8 @@ require github.com/emersion/go-imap v1.0.4 require ( github.com/axgle/mahonia v0.0.0-20180208002826-3358181d7394 github.com/emersion/go-message v0.11.2 + github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 + github.com/emersion/go-smtp v0.13.0 github.com/gobuffalo/packr v1.30.1 golang.org/x/net v0.0.0-20200513185701-a91f0712d120 golang.org/x/text v0.3.2 diff --git a/go.sum b/go.sum index 42aae0c..2bbb67f 100644 --- a/go.sum +++ b/go.sum @@ -16,6 +16,10 @@ github.com/emersion/go-message v0.11.2 h1:oxO9SQ+3wgBAQRdk07eqfkCJ26Tl8ZHF7CcpGV github.com/emersion/go-message v0.11.2/go.mod h1:C4jnca5HOTo4bGN9YdqNQM9sITuT3Y0K6bSUw9RklvY= github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b h1:uhWtEWBHgop1rqEk2klKaxPAkVDCXexai6hSuRQ7Nvs= github.com/emersion/go-sasl v0.0.0-20191210011802-430746ea8b9b/go.mod h1:G/dpzLu16WtQpBfQ/z3LYiYJn3ZhKSGWn83fyoyQe/k= +github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21 h1:OJyUGMJTzHTd1XQp98QTaHernxMYzRaOasRir9hUlFQ= +github.com/emersion/go-sasl v0.0.0-20200509203442-7bfe0ed36a21/go.mod h1:iL2twTeMvZnrg54ZoPDNfJaJaqy0xIQFuBdrLsmspwQ= +github.com/emersion/go-smtp v0.13.0 h1:aC3Kc21TdfvXnuJXCQXuhnDXUldhc12qME/S7Y3Y94g= +github.com/emersion/go-smtp v0.13.0/go.mod h1:qm27SGYgoIPRot6ubfQ/GpiPy/g3PaZAVRxiO/sDUgQ= github.com/emersion/go-textwrapper v0.0.0-20160606182133-d0e65e56babe h1:40SWqY0zE3qCi6ZrtTf5OUdNm5lDnGnjRSq9GgmeTrg= github.com/emersion/go-textwrapper v0.0.0-20160606182133-d0e65e56babe/go.mod h1:aqO8z8wPrjkscevZJFVE1wXJrLpC5LtJG7fqLOsPb2U= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= diff --git a/server.go b/server.go index 39a4cab..b107822 100644 --- a/server.go +++ b/server.go @@ -162,9 +162,17 @@ func send(w http.ResponseWriter, r *http.Request){ smtpServer:=sendData.Smtp smtpFrom:=sendData.From - //smtpTo:=sendData["to"].(string) - //smtpBody:=sendData["body"].(string) - msg, _ := json.Marshal(tools.JsonResult{Code: 200, Msg: smtpServer+smtpFrom}) + smtpTo:=sendData.To + smtpBody:=sendData.Body + smtpPass:=sendData.Password + smtpSubject:=sendData.Subject + err=tools.Send(smtpServer,smtpFrom,smtpPass,smtpTo,smtpSubject,smtpBody) + if err!=nil{ + msg, _ := json.Marshal(tools.JsonResult{Code: 400, Msg: err.Error()}) + w.Write(msg) + return + } + msg, _ := json.Marshal(tools.JsonResult{Code: 200, Msg: "发送成功!"}) w.Write(msg) } //邮件夹接口 diff --git a/tools/smtp.go b/tools/smtp.go new file mode 100644 index 0000000..bdcac90 --- /dev/null +++ b/tools/smtp.go @@ -0,0 +1,22 @@ +package tools + +import ( + "github.com/emersion/go-sasl" + "github.com/emersion/go-smtp" + "strings" +) + +func Send(server string,from string,password string,to []string,subject string,body string)error{ + auth := sasl.NewPlainClient("", from, password) + msg := strings.NewReader( + "From: "+from+"\r\n"+ + "To: "+strings.Join(to,",")+"\r\n"+ + "Subject: "+subject+"\r\n" + + "\r\n" + + body+"\r\n") + err := smtp.SendMail(server, auth, from, to, msg) + if err != nil { + return err + } + return nil +} \ No newline at end of file diff --git a/tools/types.go b/tools/types.go index 723e35b..9442011 100644 --- a/tools/types.go +++ b/tools/types.go @@ -46,6 +46,8 @@ type JsonFolders struct { type SmtpBody struct{ Smtp string From string - To string + To []string + Password string + Subject string Body string }