package main import ( "fmt" "log" "net/http" "net/smtp" ) func contactFormHandler(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodPost { http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) return } // Parse form data if err := r.ParseForm(); err != nil { http.Error(w, "Error parsing form", http.StatusBadRequest) return } name := r.FormValue("name") email := r.FormValue("email") message := r.FormValue("message") // Basic validation if name == "" || email == "" || message == "" { http.Error(w, "All fields are required", http.StatusBadRequest) return } // In a real application, you'd send an email or save to a database here // For demonstration, print to console fmt.Printf("Received contact form submission:\nName: %s\nEmail: %s\nMessage: %s\n", name, email, message) // SMTP server details for Stalwart smtpHost := "your_stalwart_hostname.com" // Replace with your Stalwart server hostname smtpPort := "587" // Standard submission port with STARTTLS smtpAddress := smtpHost + ":" + smtpPort // Authentication credentials username := "your_email@your_domain.com" // Replace with a valid Stalwart email account password := "your_email_password" // Replace with the password for the email account // Sender and recipient details from := username to := []string{"recipient@example.com"} // Replace with the recipient's email address // Email message msg := []byte("To: recipient@example.com\r\n" + "Subject: Test Email from Go and Stalwart\r\n" + "\r\n" + "This is a test email sent from a Go application through Stalwart.") // Set up authentication auth := smtp.PlainAuth("", username, password, smtpHost) // Send the email err := smtp.SendMail(smtpAddress, auth, from, to, msg) if err != nil { log.Fatalf("Error sending email: %v", err) } log.Println("Email sent successfully!") w.WriteHeader(http.StatusOK) fmt.Fprintf(w, "Contact form submitted successfully!") } func main() { http.HandleFunc("/v1/api/contact", contactFormHandler) fmt.Println("Server listening on :8080") log.Fatal(http.ListenAndServe(":8080", nil)) // // SMTP server details for Stalwart // smtpHost := "mail.npfd.info" // Replace with your Stalwart server hostname // smtpPort := "587" // Standard submission port with STARTTLS // smtpAddress := smtpHost + ":" + smtpPort // // Authentication credentials // username := "postman@npfd.info" // Replace with a valid Stalwart email account // password := "TOPSECRET" // Replace with the password for the email account // // Sender and recipient details // from := username // to := []string{"recipient@example.com"} // Replace with the recipient's email address // // Email message // msg := []byte("To: recipient@example.com\r\n" + // "Subject: Test Email from Go and Stalwart\r\n" + // "\r\n" + // "This is a test email sent from a Go application through Stalwart.") // // Set up authentication // auth := smtp.PlainAuth("", username, password, smtpHost) // // Send the email // err := smtp.SendMail(smtpAddress, auth, from, to, msg) // if err != nil { // log.Fatalf("Error sending email: %v", err) // } // log.Println("Email sent successfully!") }