package utils import ( "fmt" "gauth-central/config" "net/smtp" ) func SendVerificationEmail(toEmail, token string) error { // Get config host := config.AppConfig.EmailHost port := config.AppConfig.EmailPort from := config.AppConfig.EmailFrom if from == "" { from = "noreply@gauth.local" } // Construct verification link // Assuming frontend handles verification at /verify-email?token=... // Or backend endpoint directly: /api/v1/auth/verify-email?token=... // Let's use APP_URL from config verifyLink := fmt.Sprintf("%s/v1/auth/verify-email?token=%s", config.AppConfig.AppURL, token) // Email content subject := "Subject: Verify your email address\n" mime := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n" body := fmt.Sprintf(`

Welcome to GAuth-Central!

Please click the link below to verify your email address:

Verify Email

Or copy and paste this link: %s

`, verifyLink, verifyLink) msg := []byte(subject + mime + body) // Address addr := fmt.Sprintf("%s:%s", host, port) // Auth (if needed) var auth smtp.Auth if config.AppConfig.EmailHostUser != "" && config.AppConfig.EmailHostPassword != "" { auth = smtp.PlainAuth("", config.AppConfig.EmailHostUser, config.AppConfig.EmailHostPassword, host) } // Send email if err := smtp.SendMail(addr, auth, from, []string{toEmail}, msg); err != nil { return err } return nil } func SendContactEmail(name, email, subject, message, ip string) error { // Get config host := config.AppConfig.EmailHost port := config.AppConfig.EmailPort from := config.AppConfig.EmailFrom if from == "" { from = "noreply@gauth.local" } // Typically, contact form emails are sent TO the admin, not the user who filled the form. // However, the original code seemed to imply sending it somewhere. // Let's assume we send it to a configured admin email or the same 'from' address for now. // Or maybe we send a confirmation to the user? // The original python code `send_contact_email` likely sent it to the site admins. // Let's send it to the configured "EmailFrom" address (acting as admin) for this example. toEmail := config.AppConfig.EmailFrom if toEmail == "" { toEmail = "admin@gauth.local" } // Email content emailSubject := fmt.Sprintf("Subject: New Contact Message: %s\n", subject) mime := "MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n" body := fmt.Sprintf(`

New Contact Message

Name: %s

Email: %s

IP: %s

Subject: %s


Message:

%s

`, name, email, ip, subject, message) msg := []byte(emailSubject + mime + body) // Address addr := fmt.Sprintf("%s:%s", host, port) // Auth (if needed) var auth smtp.Auth if config.AppConfig.EmailHostUser != "" && config.AppConfig.EmailHostPassword != "" { auth = smtp.PlainAuth("", config.AppConfig.EmailHostUser, config.AppConfig.EmailHostPassword, host) } // Send email if err := smtp.SendMail(addr, auth, from, []string{toEmail}, msg); err != nil { return err } return nil }