mirror of
https://github.com/KevinMidboe/planetposen-mail.git
synced 2025-10-29 01:30:32 +00:00
* Updated example env with SITE * Updated mail page title * Updated preview payload to match template * Updated mail template with new design
89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"fmt"
|
|
"html/template"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type Product struct {
|
|
ProductNo int
|
|
Name string
|
|
Image string
|
|
Quantity int
|
|
Price float32
|
|
Currency string
|
|
}
|
|
|
|
type ReceiptPageData struct {
|
|
PageTitle string
|
|
OrderId string
|
|
Products []Product
|
|
}
|
|
|
|
type EmailTemplateData struct {
|
|
PageTitle string
|
|
Site string
|
|
Date string
|
|
OrderId string
|
|
Customer Customer
|
|
Products []Product
|
|
Sum float32
|
|
}
|
|
|
|
type Customer struct {
|
|
FirstName string
|
|
LastName string
|
|
StreetAddress string
|
|
ZipCode string
|
|
City string
|
|
}
|
|
|
|
func serveTemplate(response http.ResponseWriter, request *http.Request) {
|
|
tmpl := template.Must(template.ParseFiles("mail-templates/order-confirmation.html"))
|
|
// tmpl := template.Must(w)
|
|
data := EmailTemplateData{
|
|
PageTitle: "Takk for din bestilling!",
|
|
Site: "https://planet.schleppe.cloud",
|
|
Date: time.Now().Format("2006-01-02"),
|
|
Sum: 266.43,
|
|
OrderId: "0upJLUYPEYaOCeQMxPc=",
|
|
Products: []Product{
|
|
{ProductNo: 1, Name: "Forrest", Image: "https://storage.googleapis.com/planetposen-images/838074447f08f03c4b75ac2030dcd01201c0656c.jpg", Quantity: 4, Price: 49.99, Currency: "NOK"},
|
|
{ProductNo: 2, Name: "Cookie-Man Forrest", Image: "https://storage.googleapis.com/planetposen-images/2c47ed96b5e061d85f688849b998aa5e76c55c2a.jpg", Quantity: 3, Price: 99, Currency: "NOK"},
|
|
{ProductNo: 3, Name: "Floral", Image: "https://planet.schleppe.cloud/email/items/item-3.jpg", Quantity: 1, Price: 129, Currency: "NOK"},
|
|
},
|
|
Customer: Customer{
|
|
FirstName: "kevin",
|
|
LastName: "Midbøe",
|
|
StreetAddress: "Schleppegrells gate 18",
|
|
ZipCode: "0001",
|
|
City: "Oslo",
|
|
},
|
|
}
|
|
|
|
b := &bytes.Buffer{}
|
|
template := bufio.NewWriter(b)
|
|
err := tmpl.Execute(template, data)
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
http.Error(response, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
response.Header().Set("Content-Type", "text/html")
|
|
response.WriteHeader(http.StatusOK)
|
|
response.Write([]byte(b.String()))
|
|
}
|
|
|
|
func main() {
|
|
ADDRESS := ":5006"
|
|
fmt.Printf("Serving preview of template at %s\n", ADDRESS)
|
|
http.HandleFunc("/", serveTemplate)
|
|
log.Fatal(http.ListenAndServe(ADDRESS, nil))
|
|
}
|