diff --git a/pkg/smtpclient/smtpclient.go b/pkg/smtpclient/smtpclient.go
index dadb63c..d966a86 100644
--- a/pkg/smtpclient/smtpclient.go
+++ b/pkg/smtpclient/smtpclient.go
@@ -1,12 +1,61 @@
package smtpclient
-import "errors"
+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
+}
diff --git a/pkg/smtpclient/smtpclient_test.go b/pkg/smtpclient/smtpclient_test.go
new file mode 100644
index 0000000..43025c0
--- /dev/null
+++ b/pkg/smtpclient/smtpclient_test.go
@@ -0,0 +1,29 @@
+package smtpclient
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestRenderFile(t *testing.T) {
+ smtp := NewDummySMTPClient()
+ subject, err := smtp.renderFile("register.subject", nil)
+
+ assert.Nil(t, err)
+ assert.Equal(t, "Bestätige deine E-Mail Adresse", subject)
+}
+
+func TestRenderTemplate(t *testing.T) {
+ smtp := NewDummySMTPClient()
+
+ subject, txt, html, err := smtp.renderTemplates("register", map[string]string{"Name": "Test Account Service", "Link": "http://www.google.de"})
+ assert.Nil(t, err)
+ assert.Equal(t, "Bestätige deine E-Mail Adresse", subject)
+ assert.Equal(t, "Hallo,\n\num deinen Account auf Test Account Service zu aktivieren klicke auf folgenden Link http://www.google.de.\n\nViele Grüße,", txt)
+ htmlContent := `Hello,
+to activate your Acount at Test Account Service please click this link.
+
+Best regards,
`
+ assert.Equal(t, htmlContent, html)
+}
diff --git a/pkg/smtpclient/template/register.html b/pkg/smtpclient/template/register.html
new file mode 100644
index 0000000..bfa726a
--- /dev/null
+++ b/pkg/smtpclient/template/register.html
@@ -0,0 +1,5 @@
+Hello,
+to activate your Acount at {{ .Name }} please click this link.
+
+Best regards,
+
diff --git a/pkg/smtpclient/template/register.subject b/pkg/smtpclient/template/register.subject
new file mode 100644
index 0000000..50ad873
--- /dev/null
+++ b/pkg/smtpclient/template/register.subject
@@ -0,0 +1 @@
+Bestätige deine E-Mail Adresse
diff --git a/pkg/smtpclient/template/register.txt b/pkg/smtpclient/template/register.txt
new file mode 100644
index 0000000..a413200
--- /dev/null
+++ b/pkg/smtpclient/template/register.txt
@@ -0,0 +1,5 @@
+Hallo,
+
+um deinen Account auf {{ .Name }} zu aktivieren klicke auf folgenden Link {{ .Link }}.
+
+Viele Grüße,