Files
authorizer/server/email/email.go

95 lines
2.6 KiB
Go
Raw Normal View History

2021-07-12 23:52:16 +05:30
package email
import (
2022-01-17 11:32:13 +05:30
"bytes"
"crypto/tls"
2022-01-17 11:32:13 +05:30
"encoding/json"
"strconv"
2022-01-17 11:32:13 +05:30
"text/template"
2021-07-12 23:52:16 +05:30
2022-05-23 11:52:51 +05:30
log "github.com/sirupsen/logrus"
gomail "gopkg.in/mail.v2"
2021-07-23 21:57:44 +05:30
"github.com/authorizerdev/authorizer/server/constants"
2022-05-29 17:22:46 +05:30
"github.com/authorizerdev/authorizer/server/memorystore"
2021-07-12 23:52:16 +05:30
)
2022-01-17 11:32:13 +05:30
// 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 18:44:19 +05:30
func SendMail(to []string, Subject, bodyMessage string) error {
2022-03-02 17:42:31 +05:30
// dont trigger email sending in case of test
2022-05-29 17:22:46 +05:30
envKey, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeyEnv)
if err != nil {
return err
}
2022-06-09 23:13:22 +05:30
if envKey == constants.TestEnv {
2022-03-02 17:42:31 +05:30
return nil
}
m := gomail.NewMessage()
2022-05-29 17:22:46 +05:30
senderEmail, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeySenderEmail)
if err != nil {
log.Errorf("Error while getting sender email from env variable: %v", err)
return err
}
smtpPort, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeySmtpPort)
if err != nil {
log.Errorf("Error while getting smtp port from env variable: %v", err)
return err
}
smtpHost, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeySmtpHost)
if err != nil {
log.Errorf("Error while getting smtp host from env variable: %v", err)
return err
}
smtpUsername, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeySmtpUsername)
if err != nil {
log.Errorf("Error while getting smtp username from env variable: %v", err)
return err
}
smtpPassword, err := memorystore.Provider.GetStringStoreEnvVariable(constants.EnvKeySmtpPassword)
if err != nil {
log.Errorf("Error while getting smtp password from env variable: %v", err)
return err
}
isProd, err := memorystore.Provider.GetBoolStoreEnvVariable(constants.EnvKeyIsProd)
if err != nil {
log.Errorf("Error while getting env variable: %v", err)
return err
}
m.SetHeader("From", senderEmail)
m.SetHeader("To", to...)
m.SetHeader("Subject", Subject)
m.SetBody("text/html", bodyMessage)
2022-05-29 17:22:46 +05:30
port, _ := strconv.Atoi(smtpPort)
d := gomail.NewDialer(smtpHost, port, smtpUsername, smtpPassword)
if !isProd {
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
}
if err := d.DialAndSend(m); err != nil {
2022-05-25 12:30:22 +05:30
log.Debug("SMTP Failed: ", err)
2021-07-12 23:52:16 +05:30
return err
}
return nil
}