first commit
This commit is contained in:
3
api/go.mod
Normal file
3
api/go.mod
Normal file
@ -0,0 +1,3 @@
|
||||
module npfd-api
|
||||
|
||||
go 1.24
|
105
api/main.go
Normal file
105
api/main.go
Normal file
@ -0,0 +1,105 @@
|
||||
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!")
|
||||
}
|
Reference in New Issue
Block a user