2021-07-12 18:22:16 +00:00
|
|
|
package email
|
|
|
|
|
|
|
|
import (
|
2022-01-17 06:02:13 +00:00
|
|
|
"bytes"
|
2022-01-08 08:38:42 +00:00
|
|
|
"crypto/tls"
|
2022-01-17 06:02:13 +00:00
|
|
|
"encoding/json"
|
2022-01-08 08:38:42 +00:00
|
|
|
"strconv"
|
2022-01-17 06:02:13 +00:00
|
|
|
"text/template"
|
2021-07-12 18:22:16 +00:00
|
|
|
|
2022-05-23 06:22:51 +00:00
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
gomail "gopkg.in/mail.v2"
|
|
|
|
|
2021-07-23 16:27:44 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
2022-01-17 06:02:13 +00:00
|
|
|
"github.com/authorizerdev/authorizer/server/envstore"
|
2021-07-12 18:22:16 +00:00
|
|
|
)
|
|
|
|
|
2022-01-17 06:02:13 +00:00
|
|
|
// addEmailTemplate is used to add html template in email body
|
|
|
|
func addEmailTemplate(a string, b map[string]interface{}, templateName string) string {
|
|
|
|
tmpl, err := template.New(templateName).Parse(a)
|
|
|
|
if err != nil {
|
|
|
|
output, _ := json.Marshal(b)
|
|
|
|
return string(output)
|
|
|
|
}
|
|
|
|
buf := &bytes.Buffer{}
|
|
|
|
err = tmpl.Execute(buf, b)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
s := buf.String()
|
|
|
|
return s
|
|
|
|
}
|
|
|
|
|
|
|
|
// SendMail function to send mail
|
2022-01-08 13:14:19 +00:00
|
|
|
func SendMail(to []string, Subject, bodyMessage string) error {
|
2022-03-02 12:12:31 +00:00
|
|
|
// dont trigger email sending in case of test
|
|
|
|
if envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyEnv) == "test" {
|
|
|
|
return nil
|
|
|
|
}
|
2022-01-08 08:38:42 +00:00
|
|
|
m := gomail.NewMessage()
|
2022-02-28 02:25:01 +00:00
|
|
|
m.SetHeader("From", envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeySenderEmail))
|
2022-01-08 08:38:42 +00:00
|
|
|
m.SetHeader("To", to...)
|
|
|
|
m.SetHeader("Subject", Subject)
|
|
|
|
m.SetBody("text/html", bodyMessage)
|
2022-02-28 02:25:01 +00:00
|
|
|
port, _ := strconv.Atoi(envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeySmtpPort))
|
|
|
|
d := gomail.NewDialer(envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeySmtpHost), port, envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeySmtpUsername), envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeySmtpPassword))
|
|
|
|
if envstore.EnvStoreObj.GetStringStoreEnvVariable(constants.EnvKeyEnv) == "development" {
|
2022-01-08 08:38:42 +00:00
|
|
|
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
|
|
|
|
}
|
|
|
|
if err := d.DialAndSend(m); err != nil {
|
2022-05-23 06:22:51 +00:00
|
|
|
log.Debug("SMTP Failed:", err)
|
2021-07-12 18:22:16 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|