package main

import (
	"fmt"

	"github.com/rs/zerolog/log"
	"gopkg.in/mail.v2"
)

func SendSMTPNotification(sc smtpConfig, title, message string) error {
	// Validate required fields
	if sc.Host == "" || sc.Port == 0 || sc.From == "" || sc.To == "" {
		return fmt.Errorf("incomplete SMTP configuration")
	}

	// Create new message
	m := mail.NewMessage()
	m.SetHeader("From", sc.From)

	// Split and trim recipients
	m.SetHeader("To", sc.To)
	m.SetHeader("Subject", title)
	m.SetBody("text/plain", message)

	// Create SMTP dialer
	d := mail.NewDialer(sc.Host, sc.Port, sc.Username, sc.Password)

	// Configure TLS
	d.SSL = sc.UseSSL

	// Send the email
	if err := d.DialAndSend(m); err != nil {
		return fmt.Errorf("failed to send email: %w", err)
	}

	log.Info().Str("subject", title).Str("to", sc.To).Msg("Email notification sent")
	return nil
}
