mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-05 19:59:29 -05:00
79 lines
1.5 KiB
Go
79 lines
1.5 KiB
Go
package mail
|
|
|
|
import (
|
|
"embed"
|
|
"html/template"
|
|
"path"
|
|
"path/filepath"
|
|
)
|
|
|
|
//go:embed emails/contents/**
|
|
var contentsFS embed.FS
|
|
|
|
//go:embed emails/base/**
|
|
var baseFS embed.FS
|
|
var emails = make(map[string]Email)
|
|
|
|
type Email struct {
|
|
Subject string
|
|
Plain *template.Template
|
|
HTML *template.Template
|
|
}
|
|
|
|
func init() {
|
|
baseHTML, err := baseFS.ReadFile(filepath.Join("emails", "base", "base.html"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
baseText, err := baseFS.ReadFile(filepath.Join("emails", "base", "base.txt"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
dirName := filepath.Join("emails", "contents")
|
|
dir, err := contentsFS.ReadDir(dirName)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
for _, e := range dir {
|
|
name := e.Name()
|
|
subject, err := contentsFS.ReadFile(path.Join(dirName, name, "subject"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
textBody, err := contentsFS.ReadFile(path.Join(dirName, name, "body.txt"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
textTemplate, err := template.New("").Parse(string(textBody))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
textTemplate, err = textTemplate.Parse(string(baseText))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
htmlBody, err := contentsFS.ReadFile(path.Join(dirName, name, "body.html"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
htmlTemplate, err := template.New("").Parse(string(htmlBody))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
htmlTemplate, err = htmlTemplate.Parse(string(baseHTML))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
emails[name] = Email{
|
|
Subject: string(subject),
|
|
Plain: textTemplate,
|
|
HTML: htmlTemplate,
|
|
}
|
|
|
|
}
|
|
}
|