Browse Source

Move mail smtp function to utils

Vova Tkach 5 years ago
parent
commit
58d01c1271
2 changed files with 34 additions and 30 deletions
  1. 1 30
      smtp.go
  2. 33 0
      utils/utils.go

+ 1 - 30
smtp.go

@@ -1,12 +1,9 @@
 package main
 
 import (
-	"bytes"
 	"fmt"
 	"html"
 	"io/ioutil"
-	"mime/quotedprintable"
-	"net/smtp"
 	"os"
 	"strings"
 	"time"
@@ -18,33 +15,7 @@ import (
 )
 
 func smtp_send(host, port, user, pass, subject, msg string, receivers []string) error {
-	header := make(map[string]string)
-	header["From"] = user
-	header["To"] = strings.Join(receivers, ", ")
-	header["Subject"] = subject
-	header["MIME-Version"] = "1.0"
-	header["Content-Type"] = fmt.Sprintf("%s; charset=\"utf-8\"", "text/html")
-	header["Content-Transfer-Encoding"] = "quoted-printable"
-	header["Content-Disposition"] = "inline"
-
-	message := ""
-	for key, value := range header {
-		message += fmt.Sprintf("%s: %s\r\n", key, value)
-	}
-
-	var encodedMessage bytes.Buffer
-	finalMessage := quotedprintable.NewWriter(&encodedMessage)
-	finalMessage.Write([]byte(msg))
-	finalMessage.Close()
-	message += "\r\n" + encodedMessage.String()
-
-	return smtp.SendMail(
-		host+":"+port,
-		smtp.PlainAuth("", user, pass, host),
-		user,
-		receivers,
-		[]byte(message),
-	)
+	return utils.SMTPSend(host, port, user, pass, subject, msg, receivers)
 }
 
 func smtp_prepare(db *sqlw.DB, conf *config.Config) {

+ 33 - 0
utils/utils.go

@@ -1,13 +1,16 @@
 package utils
 
 import (
+	"bytes"
 	"crypto/md5"
 	"database/sql"
 	"encoding/hex"
 	"fmt"
 	"html/template"
 	"math"
+	"mime/quotedprintable"
 	"net/http"
+	"net/smtp"
 	"os"
 	"regexp"
 	"strconv"
@@ -487,3 +490,33 @@ func FormatProductPrice(price float64, format, round int) string {
 
 	return Float64ToStrF(p, "%.0f")
 }
+
+func SMTPSend(host, port, user, pass, subject, msg string, receivers []string) error {
+	header := make(map[string]string)
+	header["From"] = user
+	header["To"] = strings.Join(receivers, ", ")
+	header["Subject"] = subject
+	header["MIME-Version"] = "1.0"
+	header["Content-Type"] = fmt.Sprintf("%s; charset=\"utf-8\"", "text/html")
+	header["Content-Transfer-Encoding"] = "quoted-printable"
+	header["Content-Disposition"] = "inline"
+
+	message := ""
+	for key, value := range header {
+		message += fmt.Sprintf("%s: %s\r\n", key, value)
+	}
+
+	var encodedMessage bytes.Buffer
+	finalMessage := quotedprintable.NewWriter(&encodedMessage)
+	finalMessage.Write([]byte(msg))
+	finalMessage.Close()
+	message += "\r\n" + encodedMessage.String()
+
+	return smtp.SendMail(
+		host+":"+port,
+		smtp.PlainAuth("", user, pass, host),
+		user,
+		receivers,
+		[]byte(message),
+	)
+}