forked from crossphoton/email-microservice
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.go
64 lines (54 loc) · 1.87 KB
/
config.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
61
62
63
64
package src
import (
"flag"
"os"
"strconv"
"time"
mail "github.com/xhit/go-simple-mail/v2"
"go.uber.org/zap"
)
// Config stores SMTP configurations to use for sending emails
type Config struct {
SMTPHost string `mapstructure:"SMTP_HOST"`
SMTPPort int `mapstructure:"SMTP_PORT"`
SMTPEmail string `mapstructure:"SMTP_EMAIL"`
SMTPPassword string `mapstructure:"SMTP_PASSWORD"`
disableEmail bool `mapstructure:"DISABLE_EMAIL"`
}
var config Config
var err error
var logger *zap.Logger
func Initialize(_logger *zap.Logger) {
logger = _logger
smtpServer := mail.NewSMTPClient()
smtpServer.Host = config.SMTPHost
smtpServer.Port = config.SMTPPort
smtpServer.Username = config.SMTPEmail
smtpServer.Password = config.SMTPPassword
smtpServer.Encryption = mail.EncryptionSTARTTLS
smtpServer.KeepAlive = true
smtpServer.ConnectTimeout = 10 * time.Second
smtpServer.SendTimeout = 10 * time.Second
// smtpServer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
var err error
if !config.disableEmail {
smtpClient, err = smtpServer.Connect()
}
if err != nil {
logger.Fatal("failed to connect to SMTP server", zap.Error(err))
}
}
func init() {
// From environment variables
config.SMTPEmail = os.Getenv("SMTP_EMAIL")
config.SMTPHost = os.Getenv("SMTP_HOST")
config.SMTPPassword = os.Getenv("SMTP_PASSWORD")
config.SMTPPort, _ = strconv.Atoi(os.Getenv("SMTP_PORT"))
config.disableEmail, _ = strconv.ParseBool(os.Getenv("DISABLE_EMAIL"))
// From flags
flag.BoolVar(&config.disableEmail, "disableEmail", config.disableEmail, "disable email sending")
flag.StringVar(&config.SMTPEmail, "smtpEmail", config.SMTPEmail, "SMTP email")
flag.StringVar(&config.SMTPHost, "smtpHost", config.SMTPHost, "SMTP host")
flag.StringVar(&config.SMTPPassword, "smtpPassword", config.SMTPPassword, "SMTP password")
flag.IntVar(&config.SMTPPort, "smtpPort", config.SMTPPort, "SMTP port")
}