forked from semaphoreui/semaphore
/
mail.go
48 lines (42 loc) · 753 Bytes
/
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
package util
import (
"bytes"
"net/smtp"
log "github.com/Sirupsen/logrus"
"io"
)
// SendMail dispatches a mail using smtp
func SendMail(emailHost, mailSender, mailRecipient string, mail bytes.Buffer) error {
c, err := smtp.Dial(emailHost)
if err != nil {
return err
}
defer func (c *smtp.Client) {
err = c.Close()
if err != nil {
log.Error(err)
}
}(c)
// Set the sender and recipient.
err = c.Mail(mailSender)
if err != nil {
return err
}
err = c.Rcpt(mailRecipient)
if err != nil {
return err
}
// Send the email body.
wc, err := c.Data()
if err != nil {
return err
}
defer func (wc io.WriteCloser) {
err = wc.Close()
if err != nil {
log.Error(err)
}
}(wc)
_, err = mail.WriteTo(wc)
return err
}