forked from mirrors/homebox
Initial commit
This commit is contained in:
commit
29f583e936
135 changed files with 18463 additions and 0 deletions
51
backend/pkgs/mailer/mailer.go
Normal file
51
backend/pkgs/mailer/mailer.go
Normal file
|
@ -0,0 +1,51 @@
|
|||
package mailer
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"mime"
|
||||
"net/smtp"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Mailer struct {
|
||||
Host string `json:"host,omitempty"`
|
||||
Port int `json:"port,omitempty"`
|
||||
Username string `json:"username,omitempty"`
|
||||
Password string `json:"password,omitempty"`
|
||||
From string `json:"from,omitempty"`
|
||||
}
|
||||
|
||||
func (m *Mailer) Ready() bool {
|
||||
return m.Host != "" && m.Port != 0 && m.Username != "" && m.Password != "" && m.From != ""
|
||||
}
|
||||
|
||||
func (m *Mailer) server() string {
|
||||
return m.Host + ":" + strconv.Itoa(m.Port)
|
||||
}
|
||||
|
||||
func (m *Mailer) Send(msg *Message) error {
|
||||
server := m.server()
|
||||
|
||||
header := make(map[string]string)
|
||||
header["From"] = msg.From.String()
|
||||
header["To"] = msg.To.String()
|
||||
header["Subject"] = mime.QEncoding.Encode("UTF-8", msg.Subject)
|
||||
header["MIME-Version"] = "1.0"
|
||||
header["Content-Type"] = "text/html; charset=\"utf-8\""
|
||||
header["Content-Transfer-Encoding"] = "base64"
|
||||
|
||||
message := ""
|
||||
for k, v := range header {
|
||||
message += fmt.Sprintf("%s: %s\r\n", k, v)
|
||||
}
|
||||
message += "\r\n" + base64.StdEncoding.EncodeToString([]byte(msg.Body))
|
||||
|
||||
return smtp.SendMail(
|
||||
server,
|
||||
smtp.PlainAuth("", m.Username, m.Password, m.Host),
|
||||
m.From,
|
||||
[]string{msg.To.Address},
|
||||
[]byte(message),
|
||||
)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue