package main import ( "errors" "github.com/caarlos0/env/v6" ) type config struct { Port int `env:"PORT" envDefault:"8080"` HoneyPots []string `env:"HONEYPOTS" envDefault:"_t_email" envSeparator:","` DefaultRecipient string `env:"DEFAULT_TO"` AllowedRecipients []string `env:"ALLOWED_TO" envSeparator:","` Sender string `env:"EMAIL_FROM"` SmtpUser string `env:"SMTP_USER"` SmtpPassword string `env:"SMTP_PASS"` SmtpHost string `env:"SMTP_HOST"` SmtpPort int `env:"SMTP_PORT" envDefault:"587"` } func parseConfig() (config, error) { cfg := config{} if err := env.Parse(&cfg); err != nil { return cfg, errors.New("failed to parse config") } return cfg, nil } func checkRequiredConfig(cfg config) bool { if cfg.DefaultRecipient == "" { return false } if len(cfg.AllowedRecipients) < 1 { return false } if cfg.Sender == "" { return false } if cfg.SmtpUser == "" { return false } if cfg.SmtpPassword == "" { return false } if cfg.SmtpHost == "" { return false } return true }