This repository has been archived on 2025-10-08. You can view files and clone it, but cannot push or open issues or pull requests.
miniauthold/pkg/smtpclient/smtpclient.go
kekskurse 12591859b8
All checks were successful
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/playwright Pipeline was successful
ci/woodpecker/push/deplyoment Pipeline was successful
chore: smtp template
2025-03-13 23:41:48 +01:00

61 lines
1.2 KiB
Go

package smtpclient
import (
"bytes"
"embed"
"errors"
"fmt"
"html/template"
"strings"
)
type SMTPClient struct{}
//go:embed template/*
var templates embed.FS
func (s SMTPClient) SendMail(templateName string, to string, data any) error {
if to == "error@error.error" {
return errors.New("error mail send")
}
return nil
}
func NewDummySMTPClient() SMTPClient {
s := SMTPClient{}
return s
}
func (s SMTPClient) renderTemplates(templateName string, data any) (string, string, string, error) {
subject, err := s.renderFile(fmt.Sprintf("%v.subject", templateName), data)
if err != nil {
return "", "", "", err
}
txt, err := s.renderFile(fmt.Sprintf("%v.txt", templateName), data)
if err != nil {
return "", "", "", err
}
html, err := s.renderFile(fmt.Sprintf("%v.html", templateName), data)
if err != nil {
return "", "", "", err
}
return subject, txt, html, nil
}
func (s SMTPClient) renderFile(filename string, data any) (string, error) {
tmpl, err := template.ParseFS(templates, "template/"+filename)
if err != nil {
return "", err
}
var buf bytes.Buffer
err = tmpl.Execute(&buf, data)
if err != nil {
return "", err
}
renderedString := buf.String()
return strings.Trim(renderedString, "\n"), nil
}