/
mail.go
60 lines (48 loc) · 1.04 KB
/
mail.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
package mail
import (
"bytes"
"fmt"
"net/smtp"
"strconv"
"text/template"
)
type EmailUser struct {
Username string
Password string
EmailServer string
Port int
}
type SmtpTemplateData struct {
From string
To string
Subject string
Body string
}
const emailTemplate = `From: {{.From}}
To: {{.To}}
Subject: {{.Subject}}
{{.Body}}
Sincerely,
{{.From}}`
func Mail(emailUser EmailUser, smtpData SmtpTemplateData) {
auth := smtp.PlainAuth("", emailUser.Username, emailUser.Password, emailUser.EmailServer)
var err error
var doc bytes.Buffer
t := template.New("emailTemplate")
t, err = t.Parse(emailTemplate)
if err != nil {
fmt.Println("error trying to parse mail template")
}
err = t.Execute(&doc, smtpData)
if err != nil {
fmt.Println("error trying to execute mail template")
}
err = smtp.SendMail(emailUser.EmailServer+":"+strconv.Itoa(emailUser.Port),
auth,
emailUser.Username,
[]string{smtpData.To},
doc.Bytes())
if err != nil {
fmt.Println("ERROR: attempting to send a mail ", err)
}
}