kiss server monitoring tool with email alerts
go monitoring
at v0.1.0 1.1 kB view raw
1package main 2 3import ( 4 "fmt" 5 "log" 6 7 "github.com/wneessen/go-mail" 8) 9 10// sendEmail sends an alert email using the configuration 11func sendEmail(subject, body string, cfg *Config) error { 12 msg := mail.NewMsg() 13 if err := msg.From(cfg.Email.From); err != nil { 14 return fmt.Errorf("failed to set FROM address: %w", err) 15 } 16 if err := msg.To(cfg.Email.To); err != nil { 17 return fmt.Errorf("failed to set TO address: %w", err) 18 } 19 20 msg.Subject(fmt.Sprintf("[ServMon Alert] %s", subject)) 21 msg.SetBodyString(mail.TypeTextPlain, body) 22 23 // Create SMTP client with configuration 24 client, err := mail.NewClient( 25 cfg.Email.SMTPServer, 26 mail.WithSMTPAuth(mail.SMTPAuthPlain), 27 mail.WithTLSPortPolicy(mail.TLSMandatory), 28 mail.WithUsername(cfg.Email.Username), 29 mail.WithPassword(cfg.Email.Password), 30 ) 31 if err != nil { 32 return fmt.Errorf("failed to create SMTP client: %w", err) 33 } 34 35 // Send the email 36 if err := client.DialAndSend(msg); err != nil { 37 return fmt.Errorf("failed to send email: %w", err) 38 } 39 40 log.Printf("Email alert sent successfully: %s", subject) 41 return nil 42}